import*as e from"../../../core/i18n/i18n.js";import*as t from"../../../ui/components/buttons/buttons.js";import*as i from"../../../core/sdk/sdk.js";import*as r from"../../../ui/lit-html/lit-html.js";import*as a from"../../../core/root/root.js";import*as o from"../../../ui/components/report_view/report_view.js";import*as n from"../../../ui/components/legacy_wrapper/legacy_wrapper.js";import*as s from"../../../ui/components/icon_button/icon_button.js";import*as c from"../../../ui/components/helpers/helpers.js";import*as l from"../../../ui/components/render_coordinator/render_coordinator.js";import*as d from"../../../ui/components/chrome_link/chrome_link.js";import*as h from"../../../ui/components/expandable_list/expandable_list.js";import*as m from"../../../ui/components/tree_outline/tree_outline.js";import*as p from"../../../ui/components/data_grid/data_grid.js";import*as g from"../../../ui/legacy/components/utils/utils.js";import*as u from"../../network/forward/forward.js";import*as w from"../../../core/common/common.js";import*as k from"../../../models/bindings/bindings.js";import*as b from"../../../core/platform/platform.js";import*as f from"../../../models/workspace/workspace.js";import*as v from"../../../ui/components/adorners/adorners.js";import*as S from"../../../core/host/host.js";import*as y from"../../../ui/components/input/input.js";import*as T from"../../../ui/legacy/legacy.js";const R={notMainFrame:"Navigation happened in a frame other than the main frame.",backForwardCacheDisabled:"Back/forward cache is disabled by flags. Visit chrome://flags/#back-forward-cache to enable it locally on this device.",relatedActiveContentsExist:"The page was opened using '`window.open()`' and another tab has a reference to it, or the page opened a window.",HTTPStatusNotOK:"Only pages with a status code of 2XX can be cached.",schemeNotHTTPOrHTTPS:"Only pages whose URL scheme is HTTP / HTTPS can be cached.",loading:"The page did not finish loading before navigating away.",wasGrantedMediaAccess:"Pages that have granted access to record video or audio are not currently eligible for back/forward cache.",HTTPMethodNotGET:"Only pages loaded via a GET request are eligible for back/forward cache.",subframeIsNavigating:"An iframe on the page started a navigation that did not complete.",timeout:"The page exceeded the maximum time in back/forward cache and was expired.",cacheLimit:"The page was evicted from the cache to allow another page to be cached.",JavaScriptExecution:"Chrome detected an attempt to execute JavaScript while in the cache.",rendererProcessKilled:"The renderer process for the page in back/forward cache was killed.",rendererProcessCrashed:"The renderer process for the page in back/forward cache crashed.",grantedMediaStreamAccess:"Pages that have granted media stream access are not currently eligible for back/forward cache.",cacheFlushed:"The cache was intentionally cleared.",serviceWorkerVersionActivation:"The page was evicted from back/forward cache due to a service worker activation.",sessionRestored:"Chrome restarted and cleared the back/forward cache entries.",serviceWorkerPostMessage:"A service worker attempted to send the page in back/forward cache a `MessageEvent`.",enteredBackForwardCacheBeforeServiceWorkerHostAdded:"A service worker was activated while the page was in back/forward cache.",serviceWorkerClaim:"The page was claimed by a service worker while it is in back/forward cache.",haveInnerContents:"Pages that use portals are not currently eligible for back/forward cache.",timeoutPuttingInCache:"The page timed out entering back/forward cache (likely due to long-running pagehide handlers).",backForwardCacheDisabledByLowMemory:"Back/forward cache is disabled due to insufficient memory.",backForwardCacheDisabledByCommandLine:"Back/forward cache is disabled by the command line.",networkRequestDatapipeDrainedAsBytesConsumer:"Pages that have inflight fetch() or XHR are not currently eligible for back/forward cache.",networkRequestRedirected:"The page was evicted from back/forward cache because an active network request involved a redirect.",networkRequestTimeout:"The page was evicted from the cache because a network connection was open too long. Chrome limits the amount of time that a page may receive data while cached.",networkExceedsBufferLimit:"The page was evicted from the cache because an active network connection received too much data. Chrome limits the amount of data that a page may receive while cached.",navigationCancelledWhileRestoring:"Navigation was cancelled before the page could be restored from back/forward cache.",backForwardCacheDisabledForPrerender:"Back/forward cache is disabled for prerenderer.",userAgentOverrideDiffers:"Browser has changed the user agent override header.",foregroundCacheLimit:"The page was evicted from the cache to allow another page to be cached.",backForwardCacheDisabledForDelegate:"Back/forward cache is not supported by delegate.",unloadHandlerExistsInMainFrame:"The page has an unload handler in the main frame.",unloadHandlerExistsInSubFrame:"The page has an unload handler in a sub frame.",serviceWorkerUnregistration:"ServiceWorker was unregistered while a page was in back/forward cache.",noResponseHead:"Pages that do not have a valid response head cannot enter back/forward cache.",cacheControlNoStore:"Pages with cache-control:no-store header cannot enter back/forward cache.",ineligibleAPI:"Ineligible APIs were used.",internalError:"Internal error.",webSocket:"Pages with WebSocket cannot enter back/forward cache.",webTransport:"Pages with WebTransport cannot enter back/forward cache.",webRTC:"Pages with WebRTC cannot enter back/forward cache.",mainResourceHasCacheControlNoStore:"Pages whose main resource has cache-control:no-store cannot enter back/forward cache.",mainResourceHasCacheControlNoCache:"Pages whose main resource has cache-control:no-cache cannot enter back/forward cache.",subresourceHasCacheControlNoStore:"Pages whose subresource has cache-control:no-store cannot enter back/forward cache.",subresourceHasCacheControlNoCache:"Pages whose subresource has cache-control:no-cache cannot enter back/forward cache.",containsPlugins:"Pages containing plugins are not currently eligible for back/forward cache.",documentLoaded:"The document did not finish loading before navigating away.",dedicatedWorkerOrWorklet:"Pages that use a dedicated worker or worklet are not currently eligible for back/forward cache.",outstandingNetworkRequestOthers:"Pages with an in-flight network request are not currently eligible for back/forward cache.",outstandingIndexedDBTransaction:"Page with ongoing indexed DB transactions are not currently eligible for back/forward cache.",requestedNotificationsPermission:"Pages that have requested notifications permissions are not currently eligible for back/forward cache.",requestedMIDIPermission:"Pages that have requested MIDI permissions are not currently eligible for back/forward cache.",requestedAudioCapturePermission:"Pages that have requested audio capture permissions are not currently eligible for back/forward cache.",requestedVideoCapturePermission:"Pages that have requested video capture permissions are not currently eligible for back/forward cache.",requestedBackForwardCacheBlockedSensors:"Pages that have requested sensor permissions are not currently eligible for back/forward cache.",requestedBackgroundWorkPermission:"Pages that have requested background sync or fetch permissions are not currently eligible for back/forward cache.",broadcastChannel:"The page cannot be cached because it has a BroadcastChannel instance with registered listeners.",indexedDBConnection:"Pages that have an open IndexedDB connection are not currently eligible for back/forward cache.",webXR:"Pages that use WebXR are not currently eligible for back/forward cache.",sharedWorker:"Pages that use SharedWorker are not currently eligible for back/forward cache.",webLocks:"Pages that use WebLocks are not currently eligible for back/forward cache.",webHID:"Pages that use WebHID are not currently eligible for back/forward cache.",webShare:"Pages that use WebShare are not currently eligible for back/forwad cache.",requestedStorageAccessGrant:"Pages that have requested storage access are not currently eligible for back/forward cache.",webNfc:"Pages that use WebNfc are not currently eligible for back/forwad cache.",outstandingNetworkRequestFetch:"Pages with an in-flight fetch network request are not currently eligible for back/forward cache.",outstandingNetworkRequestXHR:"Pages with an in-flight XHR network request are not currently eligible for back/forward cache.",appBanner:"Pages that requested an AppBanner are not currently eligible for back/forward cache.",printing:"Pages that show Printing UI are not currently eligible for back/forward cache.",webDatabase:"Pages that use WebDatabase are not currently eligible for back/forward cache.",pictureInPicture:"Pages that use Picture-in-Picture are not currently eligible for back/forward cache.",portal:"Pages that use portals are not currently eligible for back/forward cache.",speechRecognizer:"Pages that use SpeechRecognizer are not currently eligible for back/forward cache.",idleManager:"Pages that use IdleManager are not currently eligible for back/forward cache.",paymentManager:"Pages that use PaymentManager are not currently eligible for back/forward cache.",speechSynthesis:"Pages that use SpeechSynthesis are not currently eligible for back/forward cache.",keyboardLock:"Pages that use Keyboard lock are not currently eligible for back/forward cache.",webOTPService:"Pages that use WebOTPService are not currently eligible for bfcache.",outstandingNetworkRequestDirectSocket:"Pages with an in-flight network request are not currently eligible for back/forward cache.",injectedJavascript:"Pages that `JavaScript` is injected into by extensions are not currently eligible for back/forward cache.",injectedStyleSheet:"Pages that a `StyleSheet` is injected into by extensions are not currently eligible for back/forward cache.",contentSecurityHandler:"Pages that use SecurityHandler are not eligible for back/forward cache.",contentWebAuthenticationAPI:"Pages that use WebAuthetication API are not eligible for back/forward cache.",contentFileChooser:"Pages that use FileChooser API are not eligible for back/forward cache.",contentSerial:"Pages that use Serial API are not eligible for back/forward cache.",contentFileSystemAccess:"Pages that use File System Access API are not eligible for back/forward cache.",contentMediaDevicesDispatcherHost:"Pages that use Media Device Dispatcher are not eligible for back/forward cache.",contentWebBluetooth:"Pages that use WebBluetooth API are not eligible for back/forward cache.",contentWebUSB:"Pages that use WebUSB API are not eligible for back/forward cache.",contentMediaSession:"Pages that use MediaSession API and set a playback state are not eligible for back/forward cache.",contentMediaSessionService:"Pages that use MediaSession API and set action handlers are not eligible for back/forward cache.",contentMediaPlay:"A media player was playing upon navigating away.",contentScreenReader:"Back/forward cache is disabled due to screen reader.",embedderPopupBlockerTabHelper:"Popup blocker was present upon navigating away.",embedderSafeBrowsingTriggeredPopupBlocker:"Safe Browsing considered this page to be abusive and blocked popup.",embedderSafeBrowsingThreatDetails:"Safe Browsing details were shown upon navigating away.",embedderAppBannerManager:"App Banner was present upon navigating away.",embedderDomDistillerViewerSource:"DOM Distiller Viewer was present upon navigating away.",embedderDomDistillerSelfDeletingRequestDelegate:"DOM distillation was in progress upon navigating away.",embedderOomInterventionTabHelper:"Out-Of-Memory Intervention bar was present upon navigating away.",embedderOfflinePage:"The offline page was shown upon navigating away.",embedderChromePasswordManagerClientBindCredentialManager:"Chrome Password Manager was present upon navigating away.",embedderPermissionRequestManager:"There were permission requests upon navigating away.",embedderModalDialog:"Modal dialog such as form resubmission or http password dialog was shown for the page upon navigating away.",embedderExtensions:"Back/forward cache is disabled due to extensions.",embedderExtensionMessaging:"Back/forward cache is disabled due to extensions using messaging API.",embedderExtensionMessagingForOpenPort:"Extensions with long-lived connection should close the connection before entering back/forward cache.",embedderExtensionSentMessageToCachedFrame:"Extensions with long-lived connection attempted to send messages to frames in back/forward cache.",errorDocument:"Back/forward cache is disabled due to a document error.",fencedFramesEmbedder:"Pages using FencedFrames cannot be stored in bfcache.",keepaliveRequest:"Back/forward cache is disabled due to a keepalive request.",jsNetworkRequestReceivedCacheControlNoStoreResource:"Back/forward cache is disabled because some JavaScript network request received resource with `Cache-Control: no-store` header.",indexedDBEvent:"Back/forward cache is disabled due to an IndexedDB event.",cookieDisabled:"Back/forward cache is disabled because cookies are disabled on a page that uses `Cache-Control: no-store`.",webRTCSticky:"Undefined",webTransportSticky:"Undefined",webSocketSticky:"Undefined"},x=e.i18n.registerUIStrings("panels/application/components/BackForwardCacheStrings.ts",R),$=e.i18n.getLazilyComputedLocalizedString.bind(void 0,x),N={NotPrimaryMainFrame:{name:$(R.notMainFrame)},BackForwardCacheDisabled:{name:$(R.backForwardCacheDisabled)},RelatedActiveContentsExist:{name:$(R.relatedActiveContentsExist)},HTTPStatusNotOK:{name:$(R.HTTPStatusNotOK)},SchemeNotHTTPOrHTTPS:{name:$(R.schemeNotHTTPOrHTTPS)},Loading:{name:$(R.loading)},WasGrantedMediaAccess:{name:$(R.wasGrantedMediaAccess)},HTTPMethodNotGET:{name:$(R.HTTPMethodNotGET)},SubframeIsNavigating:{name:$(R.subframeIsNavigating)},Timeout:{name:$(R.timeout)},CacheLimit:{name:$(R.cacheLimit)},JavaScriptExecution:{name:$(R.JavaScriptExecution)},RendererProcessKilled:{name:$(R.rendererProcessKilled)},RendererProcessCrashed:{name:$(R.rendererProcessCrashed)},GrantedMediaStreamAccess:{name:$(R.grantedMediaStreamAccess)},CacheFlushed:{name:$(R.cacheFlushed)},ServiceWorkerVersionActivation:{name:$(R.serviceWorkerVersionActivation)},SessionRestored:{name:$(R.sessionRestored)},ServiceWorkerPostMessage:{name:$(R.serviceWorkerPostMessage)},EnteredBackForwardCacheBeforeServiceWorkerHostAdded:{name:$(R.enteredBackForwardCacheBeforeServiceWorkerHostAdded)},ServiceWorkerClaim:{name:$(R.serviceWorkerClaim)},HaveInnerContents:{name:$(R.haveInnerContents)},TimeoutPuttingInCache:{name:$(R.timeoutPuttingInCache)},BackForwardCacheDisabledByLowMemory:{name:$(R.backForwardCacheDisabledByLowMemory)},BackForwardCacheDisabledByCommandLine:{name:$(R.backForwardCacheDisabledByCommandLine)},NetworkRequestDatapipeDrainedAsBytesConsumer:{name:$(R.networkRequestDatapipeDrainedAsBytesConsumer)},NetworkRequestRedirected:{name:$(R.networkRequestRedirected)},NetworkRequestTimeout:{name:$(R.networkRequestTimeout)},NetworkExceedsBufferLimit:{name:$(R.networkExceedsBufferLimit)},NavigationCancelledWhileRestoring:{name:$(R.navigationCancelledWhileRestoring)},BackForwardCacheDisabledForPrerender:{name:$(R.backForwardCacheDisabledForPrerender)},UserAgentOverrideDiffers:{name:$(R.userAgentOverrideDiffers)},ForegroundCacheLimit:{name:$(R.foregroundCacheLimit)},BackForwardCacheDisabledForDelegate:{name:$(R.backForwardCacheDisabledForDelegate)},UnloadHandlerExistsInMainFrame:{name:$(R.unloadHandlerExistsInMainFrame)},UnloadHandlerExistsInSubFrame:{name:$(R.unloadHandlerExistsInSubFrame)},ServiceWorkerUnregistration:{name:$(R.serviceWorkerUnregistration)},NoResponseHead:{name:$(R.noResponseHead)},CacheControlNoStore:{name:$(R.cacheControlNoStore)},CacheControlNoStoreCookieModified:{name:$(R.cacheControlNoStore)},CacheControlNoStoreHTTPOnlyCookieModified:{name:$(R.cacheControlNoStore)},DisableForRenderFrameHostCalled:{name:$(R.ineligibleAPI)},BlocklistedFeatures:{name:$(R.ineligibleAPI)},SchedulerTrackedFeatureUsed:{name:$(R.ineligibleAPI)},DomainNotAllowed:{name:$(R.internalError)},ConflictingBrowsingInstance:{name:$(R.internalError)},NotMostRecentNavigationEntry:{name:$(R.internalError)},IgnoreEventAndEvict:{name:$(R.internalError)},BrowsingInstanceNotSwapped:{name:$(R.internalError)},ActivationNavigationsDisallowedForBug1234857:{name:$(R.internalError)},Unknown:{name:$(R.internalError)},RenderFrameHostReused_SameSite:{name:$(R.internalError)},RenderFrameHostReused_CrossSite:{name:$(R.internalError)},WebSocket:{name:$(R.webSocket)},WebTransport:{name:$(R.webTransport)},WebRTC:{name:$(R.webRTC)},MainResourceHasCacheControlNoStore:{name:$(R.mainResourceHasCacheControlNoStore)},MainResourceHasCacheControlNoCache:{name:$(R.mainResourceHasCacheControlNoCache)},SubresourceHasCacheControlNoStore:{name:$(R.subresourceHasCacheControlNoStore)},SubresourceHasCacheControlNoCache:{name:$(R.subresourceHasCacheControlNoCache)},ContainsPlugins:{name:$(R.containsPlugins)},DocumentLoaded:{name:$(R.documentLoaded)},DedicatedWorkerOrWorklet:{name:$(R.dedicatedWorkerOrWorklet)},OutstandingNetworkRequestOthers:{name:$(R.outstandingNetworkRequestOthers)},OutstandingIndexedDBTransaction:{name:$(R.outstandingIndexedDBTransaction)},RequestedNotificationsPermission:{name:$(R.requestedNotificationsPermission)},RequestedMIDIPermission:{name:$(R.requestedMIDIPermission)},RequestedAudioCapturePermission:{name:$(R.requestedAudioCapturePermission)},RequestedVideoCapturePermission:{name:$(R.requestedVideoCapturePermission)},RequestedBackForwardCacheBlockedSensors:{name:$(R.requestedBackForwardCacheBlockedSensors)},RequestedBackgroundWorkPermission:{name:$(R.requestedBackgroundWorkPermission)},BroadcastChannel:{name:$(R.broadcastChannel)},IndexedDBConnection:{name:$(R.indexedDBConnection)},WebXR:{name:$(R.webXR)},SharedWorker:{name:$(R.sharedWorker)},WebLocks:{name:$(R.webLocks)},WebHID:{name:$(R.webHID)},WebShare:{name:$(R.webShare)},RequestedStorageAccessGrant:{name:$(R.requestedStorageAccessGrant)},WebNfc:{name:$(R.webNfc)},OutstandingNetworkRequestFetch:{name:$(R.outstandingNetworkRequestFetch)},OutstandingNetworkRequestXHR:{name:$(R.outstandingNetworkRequestXHR)},AppBanner:{name:$(R.appBanner)},Printing:{name:$(R.printing)},WebDatabase:{name:$(R.webDatabase)},PictureInPicture:{name:$(R.pictureInPicture)},Portal:{name:$(R.portal)},SpeechRecognizer:{name:$(R.speechRecognizer)},IdleManager:{name:$(R.idleManager)},PaymentManager:{name:$(R.paymentManager)},SpeechSynthesis:{name:$(R.speechSynthesis)},KeyboardLock:{name:$(R.keyboardLock)},WebOTPService:{name:$(R.webOTPService)},OutstandingNetworkRequestDirectSocket:{name:$(R.outstandingNetworkRequestDirectSocket)},InjectedJavascript:{name:$(R.injectedJavascript)},InjectedStyleSheet:{name:$(R.injectedStyleSheet)},Dummy:{name:$(R.internalError)},ContentSecurityHandler:{name:$(R.contentSecurityHandler)},ContentWebAuthenticationAPI:{name:$(R.contentWebAuthenticationAPI)},ContentFileChooser:{name:$(R.contentFileChooser)},ContentSerial:{name:$(R.contentSerial)},ContentFileSystemAccess:{name:$(R.contentFileSystemAccess)},ContentMediaDevicesDispatcherHost:{name:$(R.contentMediaDevicesDispatcherHost)},ContentWebBluetooth:{name:$(R.contentWebBluetooth)},ContentWebUSB:{name:$(R.contentWebUSB)},ContentMediaSession:{name:$(R.contentMediaSession)},ContentMediaSessionService:{name:$(R.contentMediaSessionService)},ContentMediaPlay:{name:$(R.contentMediaPlay)},ContentScreenReader:{name:$(R.contentScreenReader)},EmbedderPopupBlockerTabHelper:{name:$(R.embedderPopupBlockerTabHelper)},EmbedderSafeBrowsingTriggeredPopupBlocker:{name:$(R.embedderSafeBrowsingTriggeredPopupBlocker)},EmbedderSafeBrowsingThreatDetails:{name:$(R.embedderSafeBrowsingThreatDetails)},EmbedderAppBannerManager:{name:$(R.embedderAppBannerManager)},EmbedderDomDistillerViewerSource:{name:$(R.embedderDomDistillerViewerSource)},EmbedderDomDistillerSelfDeletingRequestDelegate:{name:$(R.embedderDomDistillerSelfDeletingRequestDelegate)},EmbedderOomInterventionTabHelper:{name:$(R.embedderOomInterventionTabHelper)},EmbedderOfflinePage:{name:$(R.embedderOfflinePage)},EmbedderChromePasswordManagerClientBindCredentialManager:{name:$(R.embedderChromePasswordManagerClientBindCredentialManager)},EmbedderPermissionRequestManager:{name:$(R.embedderPermissionRequestManager)},EmbedderModalDialog:{name:$(R.embedderModalDialog)},EmbedderExtensions:{name:$(R.embedderExtensions)},EmbedderExtensionMessaging:{name:$(R.embedderExtensionMessaging)},EmbedderExtensionMessagingForOpenPort:{name:$(R.embedderExtensionMessagingForOpenPort)},EmbedderExtensionSentMessageToCachedFrame:{name:$(R.embedderExtensionSentMessageToCachedFrame)},ErrorDocument:{name:$(R.errorDocument)},FencedFramesEmbedder:{name:$(R.fencedFramesEmbedder)},KeepaliveRequest:{name:$(R.keepaliveRequest)},JsNetworkRequestReceivedCacheControlNoStoreResource:{name:$(R.jsNetworkRequestReceivedCacheControlNoStoreResource)},IndexedDBEvent:{name:$(R.indexedDBEvent)},CookieDisabled:{name:$(R.cookieDisabled)},WebRTCSticky:{name:$(R.webRTCSticky)},WebTransportSticky:{name:$(R.webTransportSticky)},WebSocketSticky:{name:$(R.webSocketSticky)}},C=new CSSStyleSheet;C.replaceSync(".inline-icon{vertical-align:sub}.gray-text{color:var(--color-text-secondary);margin:0 0 5px 56px;display:flex;flex-direction:row;align-items:center;flex:auto;overflow-wrap:break-word;overflow:hidden}.explanation-frames{margin-left:56px;grid-column-start:span 2}.help-outline-icon{margin:0 2px}.circled-exclamation-icon{margin-right:10px;flex-shrink:0}.status{margin-right:11px;flex-shrink:0}.report-line{grid-column-start:span 2;display:flex;align-items:center;margin:0 30px;line-height:26px}.report-key{color:var(--color-text-secondary);min-width:auto;overflow-wrap:break-word;align-self:start}.report-value{padding:0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link,\n.devtools-link{color:var(--color-link);text-decoration:underline;cursor:pointer;outline-offset:2px}.tree-outline li .selection{margin-left:-5px}\n/*# sourceURL=backForwardCacheView.css */\n");const I={mainFrame:"Main Frame",backForwardCacheTitle:"Back/forward cache",unavailable:"unavailable",url:"URL:",unknown:"Unknown Status",normalNavigation:"Not served from back/forward cache: to trigger back/forward cache, use Chrome's back/forward buttons, or use the test button below to automatically navigate away and back.",restoredFromBFCache:"Successfully served from back/forward cache.",pageSupportNeeded:"Actionable",pageSupportNeededExplanation:"These reasons are actionable i.e. they can be cleaned up to make the page eligible for back/forward cache.",circumstantial:"Not Actionable",circumstantialExplanation:"These reasons are not actionable i.e. caching was prevented by something outside of the direct control of the page.",supportPending:"Pending Support",runTest:"Test back/forward cache",runningTest:"Running test",learnMore:"Learn more: back/forward cache eligibility",neverUseUnload:"Learn more: Never use unload handler",supportPendingExplanation:"Chrome support for these reasons is pending i.e. they will not prevent the page from being eligible for back/forward cache in a future version of Chrome.",blockingExtensionId:"Extension id: ",framesTitle:"Frames",issuesInSingleFrame:"{n, plural, =1 {# issue found in 1 frame.} other {# issues found in 1 frame.}}",issuesInMultipleFrames:"{n, plural, =1 {# issue found in {m} frames.} other {# issues found in {m} frames.}}",framesPerIssue:"{n, plural, =1 {# frame} other {# frames}}",blankURLTitle:"Blank URL [{PH1}]"},P=e.i18n.registerUIStrings("panels/application/components/BackForwardCacheView.ts",I),D=e.i18n.getLocalizedString.bind(void 0,P),M=l.RenderCoordinator.RenderCoordinator.instance();class E extends n.LegacyWrapper.WrappableComponent{static litTagName=r.literal`devtools-resources-back-forward-cache-view`;#e=this.attachShadow({mode:"open"});#t="Result";#i=0;#r=0;constructor(){super(),this.#a()?.addEventListener(i.ResourceTreeModel.Events.PrimaryPageChanged,this.render,this),this.#a()?.addEventListener(i.ResourceTreeModel.Events.BackForwardCacheDetailsUpdated,this.render,this),this.classList.add("overflow-auto")}#a(){return i.TargetManager.TargetManager.instance().primaryPageTarget()?.model(i.ResourceTreeModel.ResourceTreeModel)||null}#o(){return this.#a()?.mainFrame||null}connectedCallback(){this.#e.adoptedStyleSheets=[C]}async render(){await M.write("BackForwardCacheView render",(()=>{r.render(r.html` <${o.ReportView.Report.litTagName} .data="${{reportTitle:D(I.backForwardCacheTitle)}}"> ${this.#n()} </${o.ReportView.Report.litTagName}> `,this.#e,{host:this})}))}#s(){i.TargetManager.TargetManager.instance().removeModelListener(i.ResourceTreeModel.ResourceTreeModel,i.ResourceTreeModel.Events.FrameNavigated,this.#s,this),this.#t="Result",this.render()}async#c(){i.TargetManager.TargetManager.instance().removeModelListener(i.ResourceTreeModel.ResourceTreeModel,i.ResourceTreeModel.Events.FrameNavigated,this.#c,this),await this.#l(50)}async#l(e){const t=i.TargetManager.TargetManager.instance().primaryPageTarget()?.model(i.ResourceTreeModel.ResourceTreeModel),r=await(t?.navigationHistory());t&&r&&(r.currentIndex===this.#r?window.setTimeout(this.#l.bind(this,2*e),e):(i.TargetManager.TargetManager.instance().addModelListener(i.ResourceTreeModel.ResourceTreeModel,i.ResourceTreeModel.Events.FrameNavigated,this.#s,this),t.navigateToHistoryEntry(r.entries[r.currentIndex-1])))}async#d(){const e=i.TargetManager.TargetManager.instance().primaryPageTarget()?.model(i.ResourceTreeModel.ResourceTreeModel),t=await(e?.navigationHistory());e&&t&&(this.#r=t.currentIndex,this.#t="Running",this.render(),i.TargetManager.TargetManager.instance().addModelListener(i.ResourceTreeModel.ResourceTreeModel,i.ResourceTreeModel.Events.FrameNavigated,this.#c,this),e.navigate("chrome://terms"))}#n(){const e=this.#o();if(!e)return r.html` <${o.ReportView.ReportKey.litTagName}> ${D(I.mainFrame)} </${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> ${D(I.unavailable)} </${o.ReportView.ReportValue.litTagName}> `;const i="Running"===this.#t,a=e.url.startsWith("devtools://");return r.html` ${this.#h(e.backForwardCacheDetails.restoredFromCache)} <div class="report-line"> <div class="report-key"> ${D(I.url)} </div> <div class="report-value" title="${e.url}"> ${e.url} </div> </div> ${this.#m(e.backForwardCacheDetails.explanationsTree)} <${o.ReportView.ReportSection.litTagName}> <${t.Button.Button.litTagName} aria-label="${D(I.runTest)}" .disabled="${i||a}" .spinner="${i}" .variant="${"primary"}" @click="${this.#d}"> ${i?r.html` ${D(I.runningTest)}`:`\n            ${D(I.runTest)}\n          `} </${t.Button.Button.litTagName}> </${o.ReportView.ReportSection.litTagName}> <${o.ReportView.ReportSectionDivider.litTagName}> </${o.ReportView.ReportSectionDivider.litTagName}> ${this.#p(e.backForwardCacheDetails.explanations,e.backForwardCacheDetails.explanationsTree)} <${o.ReportView.ReportSection.litTagName}> <x-link href="https://web.dev/bfcache/" class="link"> ${D(I.learnMore)} </x-link> </${o.ReportView.ReportSection.litTagName}> `}#m(e){if(!e||0===e.explanations.length&&0===e.children.length||!a.Runtime.experiments.isEnabled("bfcacheDisplayTree"))return r.nothing;const t=this.#g(e,{blankCount:1});t.node.treeNodeData.iconName="frame";let i="";i=1===t.frameCount?D(I.issuesInSingleFrame,{n:t.issueCount}):D(I.issuesInMultipleFrames,{n:t.issueCount,m:t.frameCount});const o={treeNodeData:{text:i},id:"root",children:()=>Promise.resolve([t.node])};return r.html` <div class="report-line"> <div class="report-key"> ${D(I.framesTitle)} </div> <div class="report-value"> <${m.TreeOutline.TreeOutline.litTagName} .data="${{tree:[o],defaultRenderer:function(e){return r.html` <div class="text-ellipsis"> ${e.treeNodeData.iconName?r.html` <${s.Icon.Icon.litTagName} class="inline-icon" style="margin-bottom: -3px;" .data="${{iconName:e.treeNodeData.iconName,color:"var(--icon-default)",width:"20px",height:"20px"}}"> </${s.Icon.Icon.litTagName}> `:r.nothing} ${e.treeNodeData.text} </div> `},compact:!0}}"> </${m.TreeOutline.TreeOutline.litTagName}> </div> </div> `}#g(e,t){let i=1,r=0;const a=[];let o="";e.url.length?o=e.url:(o=D(I.blankURLTitle,{PH1:t.blankCount}),t.blankCount+=1);for(const t of e.explanations){const e={treeNodeData:{text:t.reason},id:String(this.#i++)};r+=1,a.push(e)}for(const o of e.children){const e=this.#g(o,t);e.issueCount>0&&(a.push(e.node),r+=e.issueCount,i+=e.frameCount)}let n={treeNodeData:{text:`(${r}) ${o}`},id:String(this.#i++)};return a.length?(n={...n,children:()=>Promise.resolve(a)},n.treeNodeData.iconName="iframe"):e.url.length||(t.blankCount-=1),{node:n,frameCount:i,issueCount:r}}#h(e){switch(e){case!0:return r.html` <${o.ReportView.ReportSection.litTagName}> <div class="status"> <${s.Icon.Icon.litTagName} class="inline-icon" .data="${{iconName:"check-circle",color:"var(--icon-checkmark-green)",width:"20px",height:"20px"}}"> </${s.Icon.Icon.litTagName}> </div> ${D(I.restoredFromBFCache)} </${o.ReportView.ReportSection.litTagName}> `;case!1:return r.html` <${o.ReportView.ReportSection.litTagName}> <div class="status"> <${s.Icon.Icon.litTagName} class="inline-icon" .data="${{iconName:"clear",color:"var(--icon-default)",width:"20px",height:"20px"}}"> </${s.Icon.Icon.litTagName}> </div> ${D(I.normalNavigation)} </${o.ReportView.ReportSection.litTagName}> `}return r.html` <${o.ReportView.ReportSection.litTagName}> ${D(I.unknown)} </${o.ReportView.ReportSection.litTagName}> `}#u(e,t,i){let r=e.url;0===r.length&&(r=D(I.blankURLTitle,{PH1:t.blankCount}),t.blankCount+=1),e.explanations.forEach((e=>{let t=i.get(e.reason);void 0===t?(t=[r],i.set(e.reason,t)):t.push(r)})),e.children.map((e=>{this.#u(e,t,i)}))}#p(e,t){if(0===e.length)return r.nothing;const i=e.filter((e=>"PageSupportNeeded"===e.type)),a=e.filter((e=>"SupportPending"===e.type)),o=e.filter((e=>"Circumstantial"===e.type)),n=new Map;return t&&this.#u(t,{blankCount:1},n),r.html` ${this.#w(D(I.pageSupportNeeded),D(I.pageSupportNeededExplanation),i,n)} ${this.#w(D(I.supportPending),D(I.supportPendingExplanation),a,n)} ${this.#w(D(I.circumstantial),D(I.circumstantialExplanation),o,n)} `}#w(e,t,i,a){return r.html` ${i.length>0?r.html` <${o.ReportView.ReportSectionHeader.litTagName}> ${e} <div class="help-outline-icon"> <${s.Icon.Icon.litTagName} class="inline-icon" .data="${{iconName:"help",color:"var(--icon-default)",width:"16px",height:"16px"}}" title="${t}"> </${s.Icon.Icon.litTagName}> </div> </${o.ReportView.ReportSectionHeader.litTagName}> ${i.map((e=>this.#k(e,a.get(e.reason))))} `:r.nothing} `}#b(e){if("EmbedderExtensionSentMessageToCachedFrame"===e.reason&&e.context){const t="chrome://extensions/?id="+e.context;return r.html`${D(I.blockingExtensionId)} <${d.ChromeLink.ChromeLink.litTagName} .href="${t}">${e.context}</${d.ChromeLink.ChromeLink.litTagName}>`}return r.nothing}#f(e){if(void 0===e||0===e.length||!a.Runtime.experiments.isEnabled("bfcacheDisplayTree"))return r.nothing;const t=[r.html`<div>${D(I.framesPerIssue,{n:e.length})}</div>`];return t.push(...e.map((e=>r.html`<div class="text-ellipsis" title="${e}">${e}</div>`))),r.html` <div class="explanation-frames"> <${h.ExpandableList.ExpandableList.litTagName} .data="${{rows:t}}"></${h.ExpandableList.ExpandableList.litTagName}> </div> `}#v(e){return"UnloadHandlerExistsInMainFrame"===e.reason||"UnloadHandlerExistsInSubFrame"===e.reason?r.html` <x-link href="https://web.dev/bfcache/#never-use-the-unload-event" class="link"> ${D(I.neverUseUnload)} </x-link>`:r.nothing}#k(e,t){return r.html` <${o.ReportView.ReportSection.litTagName}> ${e.reason in N?r.html` <div class="circled-exclamation-icon"> <${s.Icon.Icon.litTagName} class="inline-icon" .data="${{iconName:"warning",color:"var(--icon-warning)",width:"16px",height:"16px"}}"> </${s.Icon.Icon.litTagName}> </div> <div> ${N[e.reason].name()} ${this.#v(e)} ${this.#b(e)} </div>`:r.nothing} </${o.ReportView.ReportSection.litTagName}> <div class="gray-text"> ${e.reason} </div> ${this.#f(t)} `}}c.CustomElements.defineComponent("devtools-resources-back-forward-cache-view",E);var V=Object.freeze({__proto__:null,BackForwardCacheView:E});const B=new CSSStyleSheet;B.replaceSync("devtools-data-grid-controller{border:1px solid var(--color-details-hairline);margin-top:0}.link,\n.devtools-link{color:var(--color-link);text-decoration:underline;cursor:pointer;outline-offset:2px}\n/*# sourceURL=bounceTrackingMitigationsView.css */\n");const F={bounceTrackingMitigationsTitle:"Bounce Tracking Mitigations",forceRun:"Force run",runningMitigations:"Running",stateDeletedFor:"State was deleted for the following sites:",checkingPotentialTrackers:"Checking for potential bounce tracking sites.",learnMore:"Learn more: Bounce Tracking Mitigations",noPotentialBounceTrackersIdentified:"State was not cleared for any potential bounce tracking sites. Either none were identified, bounce tracking mitigations are not enabled, or third-party cookies are not blocked."},A=e.i18n.registerUIStrings("panels/application/components/BounceTrackingMitigationsView.ts",F),L=e.i18n.getLocalizedString.bind(void 0,A);class H extends HTMLElement{static litTagName=r.literal`devtools-bounce-tracking-mitigations-view`;#e=this.attachShadow({mode:"open"});#S=[];#t="Result";#y=!1;connectedCallback(){this.#e.adoptedStyleSheets=[B],this.#T()}#T(){r.render(r.html` <${o.ReportView.Report.litTagName} .data="${{reportTitle:L(F.bounceTrackingMitigationsTitle)}}"> ${this.#n()} </${o.ReportView.Report.litTagName}> `,this.#e,{host:this})}#n(){return r.html` <${o.ReportView.ReportSection.litTagName}> ${this.#R()} </${o.ReportView.ReportSection.litTagName}> ${this.#x()} <${o.ReportView.ReportSectionDivider.litTagName}> </${o.ReportView.ReportSectionDivider.litTagName}> <${o.ReportView.ReportSection.litTagName}> <x-link href="https://privacycg.github.io/nav-tracking-mitigations/#bounce-tracking-mitigations" class="link"> ${L(F.learnMore)} </x-link> </${o.ReportView.ReportSection.litTagName}> `}#R(){const e="Running"===this.#t;return r.html` <${t.Button.Button.litTagName} aria-label="${L(F.forceRun)}" .disabled="${e}" .spinner="${e}" .variant="${"primary"}" @click="${this.#$}"> ${e?r.html` ${L(F.runningMitigations)}`:`\n          ${L(F.forceRun)}\n        `} </${t.Button.Button.litTagName}> `}#x(){if(!this.#y)return r.html``;if(0===this.#S.length)return r.html` <${o.ReportView.ReportSection.litTagName}> ${"Running"===this.#t?r.html` ${L(F.checkingPotentialTrackers)}`:`\n          ${L(F.noPotentialBounceTrackersIdentified)}\n        `} </${o.ReportView.ReportSection.litTagName}> `;const e={columns:[{id:"sites",title:L(F.stateDeletedFor),widthWeighting:10,hideable:!1,visible:!0,sortable:!0}],rows:this.#N(),initialSort:{columnId:"sites",direction:"ASC"}};return r.html` <${o.ReportView.ReportSection.litTagName}> <${p.DataGridController.DataGridController.litTagName} .data="${e}"> </${p.DataGridController.DataGridController.litTagName}> </${o.ReportView.ReportSection.litTagName}> `}async#$(){const e=i.TargetManager.TargetManager.instance().primaryPageTarget();if(!e)return;this.#y=!0,this.#t="Running",this.#T();const t=await e.storageAgent().invoke_runBounceTrackingMitigations();this.#S=[],t.deletedSites.forEach((e=>{this.#S.push(e)})),this.#C()}#C(){this.#t="Result",this.#T()}#N(){return this.#S.map((e=>({cells:[{columnId:"sites",value:e}]})))}}c.CustomElements.defineComponent("devtools-bounce-tracking-mitigations-view",H);var O=Object.freeze({__proto__:null,i18nString:L,BounceTrackingMitigationsView:H});const U=new CSSStyleSheet;U.replaceSync(":host{overflow:auto;height:100%}.reporting-container{height:100%;display:flex;flex-direction:column}.reporting-header{font-size:15px;background-color:var(--color-background-elevation-1);padding:1px 4px}.reporting-placeholder{flex-grow:1;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--color-text-secondary)}devtools-data-grid-controller{border:1px solid var(--color-details-hairline)}.inline-icon{vertical-align:text-bottom}\n/*# sourceURL=reportingApiGrid.css */\n");const q={noEndpointsToDisplay:"No endpoints to display"},W=e.i18n.registerUIStrings("panels/application/components/EndpointsGrid.ts",q),G=e.i18n.getLocalizedString.bind(void 0,W),{render:z,html:K}=r;class _ extends HTMLElement{static litTagName=r.literal`devtools-resources-endpoints-grid`;#e=this.attachShadow({mode:"open"});#I=new Map;connectedCallback(){this.#e.adoptedStyleSheets=[U],this.#T()}set data(e){this.#I=e.endpoints,this.#T()}#T(){const t={columns:[{id:"origin",title:e.i18n.lockedString("Origin"),widthWeighting:30,hideable:!1,visible:!0},{id:"name",title:e.i18n.lockedString("Name"),widthWeighting:20,hideable:!1,visible:!0},{id:"url",title:e.i18n.lockedString("URL"),widthWeighting:30,hideable:!1,visible:!0}],rows:this.#P()};z(K` <div class="reporting-container"> <div class="reporting-header">${e.i18n.lockedString("Endpoints")}</div> ${this.#I.size>0?K` <${p.DataGridController.DataGridController.litTagName} .data="${t}"> </${p.DataGridController.DataGridController.litTagName}> `:K` <div class="reporting-placeholder"> <div>${G(q.noEndpointsToDisplay)}</div> </div> `} </div> `,this.#e,{host:this})}#P(){return Array.from(this.#I).map((([e,t])=>t.map((t=>({cells:[{columnId:"origin",value:e},{columnId:"name",value:t.groupName},{columnId:"url",value:t.url}]}))))).flat()}}c.CustomElements.defineComponent("devtools-resources-endpoints-grid",_);var j=Object.freeze({__proto__:null,i18nString:G,EndpointsGrid:_});const X=new CSSStyleSheet;X.replaceSync(".stack-trace-row{display:flex}.stack-trace-function-name{width:100px}.stack-trace-source-location{display:flex;overflow:hidden}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stack-trace-source-location .text-ellipsis{padding-right:2px}.ignore-list-link{opacity:60%}.link,\n.devtools-link{color:var(--color-link);text-decoration:underline;cursor:pointer;outline-offset:2px}\n/*# sourceURL=stackTraceRow.css */\n");const J=new CSSStyleSheet;J.replaceSync("button.link{color:var(--color-link);text-decoration:underline;cursor:pointer;outline-offset:2px;border:none;background:none;font-family:inherit;font-size:inherit}\n/*# sourceURL=stackTraceLinkButton.css */\n");const Y={cannotRenderStackTrace:"Cannot render stack trace",showSMoreFrames:"{n, plural, =1 {Show # more frame} other {Show # more frames}}",showLess:"Show less"},Q=e.i18n.registerUIStrings("panels/application/components/StackTrace.ts",Y),Z=e.i18n.getLocalizedString.bind(void 0,Q);class ee extends HTMLElement{static litTagName=r.literal`devtools-stack-trace-row`;#e=this.attachShadow({mode:"open"});#D=null;set data(e){this.#D=e.stackTraceRowItem,this.#T()}connectedCallback(){this.#e.adoptedStyleSheets=[X]}#T(){this.#D&&r.render(r.html` <div class="stack-trace-row"> <div class="stack-trace-function-name text-ellipsis" title="${this.#D.functionName}"> ${this.#D.functionName} </div> <div class="stack-trace-source-location"> ${this.#D.link?r.html`<div class="text-ellipsis">\xA0@\xA0${this.#D.link}</div>`:r.nothing} </div> </div> `,this.#e,{host:this})}}class te extends HTMLElement{static litTagName=r.literal`devtools-stack-trace-link-button`;#e=this.attachShadow({mode:"open"});#M=()=>{};#E=null;#V=!1;set data(e){this.#M=e.onShowAllClick,this.#E=e.hiddenCallFramesCount,this.#V=e.expandedView,this.#T()}connectedCallback(){this.#e.adoptedStyleSheets=[J]}#T(){if(!this.#E)return;const e=this.#V?Z(Y.showLess):Z(Y.showSMoreFrames,{n:this.#E});r.render(r.html` <div class="stack-trace-row"> <button class="link" @click="${()=>this.#M()}"> ${e} </button> </div> `,this.#e,{host:this})}}class ie extends HTMLElement{static litTagName=r.literal`devtools-resources-stack-trace`;#e=this.attachShadow({mode:"open"});#B=new g.Linkifier.Linkifier;#F=[];#A=!1;set data(e){const t=e.frame,{creationStackTrace:i,creationStackTraceTarget:r}=t.getCreationStackTraceData();i&&(this.#F=e.buildStackTraceRows(i,r,this.#B,!0,this.#L.bind(this))),this.#T()}#L(e){this.#F=e,this.#T()}#H(){this.#A=!this.#A,this.#T()}createRowTemplates(){const e=[];let t=0;for(const i of this.#F)!this.#A&&i.ignoreListHide||("functionName"in i&&e.push(r.html` <${ee.litTagName} data-stack-trace-row .data="${{stackTraceRowItem:i}}"></${ee.litTagName}>`),"asyncDescription"in i&&e.push(r.html` <div>${i.asyncDescription}</div> `)),"functionName"in i&&i.ignoreListHide&&t++;return t&&e.push(r.html` <${te.litTagName} data-stack-trace-row .data="${{onShowAllClick:this.#H.bind(this),hiddenCallFramesCount:t,expandedView:this.#A}}"></${te.litTagName}> `),e}#T(){if(!this.#F.length)return void r.render(r.html` <span>${Z(Y.cannotRenderStackTrace)}</span> `,this.#e,{host:this});const e=this.createRowTemplates();r.render(r.html` <${h.ExpandableList.ExpandableList.litTagName} .data="${{rows:e}}"> </${h.ExpandableList.ExpandableList.litTagName}> `,this.#e,{host:this})}}c.CustomElements.defineComponent("devtools-stack-trace-row",ee),c.CustomElements.defineComponent("devtools-stack-trace-link-button",te),c.CustomElements.defineComponent("devtools-resources-stack-trace",ie);var re=Object.freeze({__proto__:null,StackTraceRow:ee,StackTraceLinkButton:te,StackTrace:ie});const ae=new CSSStyleSheet;ae.replaceSync(":host{display:contents}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link,\n.devtools-link{color:var(--color-link);text-decoration:underline;cursor:pointer;outline-offset:2px}button.link{border:none;background:none;font-family:inherit;font-size:inherit}.policies-list{padding-top:3px}.permissions-row{display:flex;line-height:22px}.permissions-row div{padding-right:5px}.feature-name{width:135px}.allowed-icon{vertical-align:sub}.block-reason{width:215px}\n/*# sourceURL=permissionsPolicySection.css */\n");const oe={showDetails:"Show details",hideDetails:"Hide details",allowedFeatures:"Allowed Features",disabledFeatures:"Disabled Features",clickToShowHeader:'Click to reveal the request whose "`Permissions-Policy`" HTTP header disables this feature.',clickToShowIframe:"Click to reveal the top-most iframe which does not allow this feature in the elements panel.",disabledByIframe:'missing in iframe "`allow`" attribute',disabledByHeader:'disabled by "`Permissions-Policy`" header',disabledByFencedFrame:"disabled inside a `fencedframe`"},ne=e.i18n.registerUIStrings("panels/application/components/PermissionsPolicySection.ts",oe),se=e.i18n.getLocalizedString.bind(void 0,ne),ce=l.RenderCoordinator.RenderCoordinator.instance();function le(e,t,i){return r.html` <button class="link" role="link" tabindex="0" @click="${i}" title="${t}"> <${s.Icon.Icon.litTagName} .data="${{iconName:e,color:"var(--icon-link)",width:"16px",height:"16px"}}"> </${s.Icon.Icon.litTagName}> </button> `}class de extends HTMLElement{static litTagName=r.literal`devtools-resources-permissions-policy-section`;#e=this.attachShadow({mode:"open"});#O={policies:[],showDetails:!1};set data(e){this.#O=e,this.#T()}connectedCallback(){this.#e.adoptedStyleSheets=[ae]}#U(){this.#O.showDetails=!this.#O.showDetails,this.#T()}#q(){const e=this.#O.policies.filter((e=>e.allowed)).map((e=>e.feature)).sort();return e.length?r.html` <${o.ReportView.ReportKey.litTagName}>${se(oe.allowedFeatures)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> ${e.join(", ")} </${o.ReportView.ReportValue.litTagName}> `:r.nothing}async#W(){const e=this.#O.policies.filter((e=>!e.allowed)).sort(((e,t)=>e.feature.localeCompare(t.feature)));if(!e.length)return r.nothing;if(!this.#O.showDetails)return r.html` <${o.ReportView.ReportKey.litTagName}>${se(oe.disabledFeatures)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> ${e.map((e=>e.feature)).join(", ")} <button class="link" @click="${()=>this.#U()}"> ${se(oe.showDetails)} </button> </${o.ReportView.ReportValue.litTagName}> `;const t=i.FrameManager.FrameManager.instance(),a=await Promise.all(e.map((async e=>{const i=e.locator?t.getFrame(e.locator.frameId):null,a=e.locator?.blockReason,o=await("IframeAttribute"===a&&i&&i.getOwnerDOMNodeOrDocument()),n=i&&i.resourceForURL(i.url),c="Header"===a&&n&&n.request,l=(()=>{switch(a){case"IframeAttribute":return se(oe.disabledByIframe);case"Header":return se(oe.disabledByHeader);case"InFencedFrameTree":return se(oe.disabledByFencedFrame);default:return""}})();return r.html` <div class="permissions-row"> <div> <${s.Icon.Icon.litTagName} class="allowed-icon" .data="${{color:"var(--icon-error)",iconName:"cross-circle",width:"20px",height:"20px"}}"> </${s.Icon.Icon.litTagName}> </div> <div class="feature-name text-ellipsis"> ${e.feature} </div> <div class="block-reason">${l}</div> <div> ${o?le("code-circle",se(oe.clickToShowIframe),(()=>w.Revealer.reveal(o))):r.nothing} ${c?le("arrow-up-down-circle",se(oe.clickToShowHeader),(async()=>{if(!c)return;const e=c.responseHeaderValue("permissions-policy")?"permissions-policy":"feature-policy",t=u.UIRequestLocation.UIRequestLocation.responseHeaderMatch(c,{name:e,value:""});await w.Revealer.reveal(t)})):r.nothing} </div> </div> `})));return r.html` <${o.ReportView.ReportKey.litTagName}>${se(oe.disabledFeatures)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName} class="policies-list"> ${a} <div class="permissions-row"> <button class="link" @click="${()=>this.#U()}"> ${se(oe.hideDetails)} </button> </div> </${o.ReportView.ReportValue.litTagName}> `}async#T(){await ce.write("PermissionsPolicySection render",(()=>{r.render(r.html` <${o.ReportView.ReportSectionHeader.litTagName}>${e.i18n.lockedString("Permissions Policy")}</${o.ReportView.ReportSectionHeader.litTagName}> ${this.#q()} ${r.Directives.until(this.#W(),r.nothing)} <${o.ReportView.ReportSectionDivider.litTagName}></${o.ReportView.ReportSectionDivider.litTagName}> `,this.#e,{host:this})}))}}c.CustomElements.defineComponent("devtools-resources-permissions-policy-section",de);const he=new CSSStyleSheet;he.replaceSync(":host .badge-error{--override-adorner-text-color:var(--color-red);--override-adorner-border-color:var(--color-red)}:host .badge-success{--override-adorner-text-color:var(--color-accent-green);--override-adorner-border-color:var(--color-accent-green)}:host .badge-secondary{--override-adorner-text-color:var(--color-text-secondary);--override-adorner-border-color:var(--color-text-secondary)}:host{font-family:var(--source-code-font-family)}\n/*# sourceURL=badge.css */\n");const me=new CSSStyleSheet;me.replaceSync(".content{display:grid;grid-template-columns:min-content 1fr}.key{color:var(--color-text-secondary);padding:0 6px;text-align:right;white-space:pre}.value{color:var(--color-text-primary);margin-inline-start:0;padding:0 6px}.error-text{color:var(--color-red);font-weight:bold}\n/*# sourceURL=originTrialTokenRows.css */\n");const pe={origin:"Origin",trialName:"Trial Name",expiryTime:"Expiry Time",usageRestriction:"Usage Restriction",isThirdParty:"Third Party",matchSubDomains:"Subdomain Matching",rawTokenText:"Raw Token",status:"Token Status",token:"Token",tokens:"{PH1} tokens"},ge=e.i18n.registerUIStrings("panels/application/components/OriginTrialTreeView.ts",pe),ue=e.i18n.getLocalizedString.bind(void 0,ge);class we extends HTMLElement{static litTagName=r.literal`devtools-resources-origin-trial-tree-view-badge`;#e=this.attachShadow({mode:"open"});#G=new v.Adorner.Adorner;set data(e){this.#T(e)}connectedCallback(){this.#e.adoptedStyleSheets=[he]}#T(e){const t=document.createElement("span");t.textContent=e.badgeContent,this.#G.data={name:"badge",content:t},this.#G.classList.add(`badge-${e.style}`),r.render(r.html` ${this.#G} `,this.#e,{host:this})}}function ke(e){return{treeNodeData:e,id:"OriginTrialTreeNode#"+e.trialName,children:async()=>e.tokensWithStatus.length>1?e.tokensWithStatus.map(be):ve(e.tokensWithStatus[0]),renderer:e=>{const t=e.treeNodeData,i=r.html` <${we.litTagName} .data="${{badgeContent:ue(pe.tokens,{PH1:t.tokensWithStatus.length}),style:"secondary"}}"></${we.litTagName}> `;return r.html` ${t.trialName} <${we.litTagName} .data="${{badgeContent:t.status,style:"Enabled"===t.status?"success":"error"}}"></${we.litTagName}> ${t.tokensWithStatus.length>1?i:r.nothing} `}}}function be(e){return{treeNodeData:e.status,id:"TokenNode#"+e.rawTokenText,children:async()=>ve(e),renderer:(e,t)=>{const i=e.treeNodeData,a=r.html` <${we.litTagName} .data="${{badgeContent:i,style:"Success"===i?"success":"error"}}"></${we.litTagName}> `;return r.html`${ue(pe.token)} ${t.isExpanded?r.nothing:a}`}}}function fe(e){return r.html` <${ye.litTagName} .data="${{node:e}}"> </${ye.litTagName}> `}function ve(e){return[{treeNodeData:e,id:"TokenDetailsNode#"+e.rawTokenText,renderer:fe},(t=e.rawTokenText,{treeNodeData:ue(pe.rawTokenText),id:"TokenRawTextContainerNode#"+t,children:async()=>[{treeNodeData:t,id:"TokenRawTextNode#"+t,renderer:e=>{const t=e.treeNodeData;return r.html` <div style="overflow-wrap: break-word;"> ${t} </div> `}}]})];var t}function Se(e){return r.html`${String(e.treeNodeData)}`}c.CustomElements.defineComponent("devtools-resources-origin-trial-tree-view-badge",we);class ye extends HTMLElement{static litTagName=r.literal`devtools-resources-origin-trial-token-rows`;#e=this.attachShadow({mode:"open"});#z=null;#K=[];#_=new Intl.DateTimeFormat(e.DevToolsLocale.DevToolsLocale.instance().locale,{dateStyle:"long",timeStyle:"long"});set data(e){this.#z=e.node.treeNodeData,this.#j()}connectedCallback(){this.#e.adoptedStyleSheets=[me],this.#T()}#X=(e,t)=>r.html` <div class="${r.Directives.ifDefined(t?"error-text":void 0)}"> ${e} </div>`;#j(){this.#z?.parsedToken&&(this.#K=[{name:ue(pe.origin),value:this.#X(this.#z.parsedToken.origin,"WrongOrigin"===this.#z.status)},{name:ue(pe.expiryTime),value:this.#X(this.#_.format(1e3*this.#z.parsedToken.expiryTime),"Expired"===this.#z.status)},{name:ue(pe.usageRestriction),value:this.#X(this.#z.parsedToken.usageRestriction)},{name:ue(pe.isThirdParty),value:this.#X(this.#z.parsedToken.isThirdParty.toString())},{name:ue(pe.matchSubDomains),value:this.#X(this.#z.parsedToken.matchSubDomains.toString())}],"UnknownTrial"===this.#z.status&&(this.#K=[{name:ue(pe.trialName),value:this.#X(this.#z.parsedToken.trialName)},...this.#K]))}#T(){if(!this.#z)return;const e=[{name:ue(pe.status),value:r.html` <${we.litTagName} .data="${{badgeContent:this.#z.status,style:"Success"===this.#z.status?"success":"error"}}"></${we.litTagName}>`},...this.#K].map((e=>r.html` <div class="key">${e.name}</div> <div class="value">${e.value}</div> `));r.render(r.html` <div class="content"> ${e} </div> `,this.#e,{host:this})}}c.CustomElements.defineComponent("devtools-resources-origin-trial-token-rows",ye);class Te extends HTMLElement{static litTagName=r.literal`devtools-resources-origin-trial-tree-view`;#e=this.attachShadow({mode:"open"});set data(e){this.#T(e.trials)}#T(e){e.length&&r.render(r.html` <${m.TreeOutline.TreeOutline.litTagName} .data="${{tree:e.map(ke),defaultRenderer:Se}}"> </${m.TreeOutline.TreeOutline.litTagName}> `,this.#e,{host:this})}}c.CustomElements.defineComponent("devtools-resources-origin-trial-tree-view",Te);var Re=Object.freeze({__proto__:null,Badge:we,OriginTrialTokenRows:ye,OriginTrialTreeView:Te});const xe=new CSSStyleSheet;xe.replaceSync('.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}button ~ .text-ellipsis{padding-left:2px}.link,\n.devtools-link{color:var(--color-link);text-decoration:underline;cursor:pointer;outline-offset:2px;padding:0}button.link{border:none;background:none;font-family:inherit;font-size:inherit;height:16px}button.link:has(devtools-icon){margin-top:5px}button.text-link{padding-left:2px;height:26px}.inline-button{padding-left:1ex}.inline-comment{padding-left:1ex;white-space:pre-line}.inline-comment::before{content:"("}.inline-comment::after{content:")"}.inline-name{color:var(--color-text-secondary);padding-left:2ex;user-select:none;white-space:pre-line}.inline-name::after{content:":\\u00a0"}.inline-items{display:flex}.span-cols{grid-column-start:span 2;margin:0 0 8px 30px;line-height:28px}.without-min-width{min-width:auto}\n/*# sourceURL=frameDetailsReportView.css */\n');const $e={Activated:"Activated.",Destroyed:"A prerendered page was abandoned for unknown reasons.",LowEndDevice:"Prerendering is not supported for low-memory devices.",InvalidSchemeRedirect:"Attempted to prerender a URL that redirected to a non-HTTP(S) URL. Only HTTP(S) pages can be prerendered.",InvalidSchemeNavigation:"Only HTTP(S) navigation allowed for Prerender.",InProgressNavigation:"InProgressNavigation.",NavigationRequestBlockedByCsp:"Navigation request is blocked by CSP.",MainFrameNavigation:"Navigations after the initial prerendering navigation are disallowed",MojoBinderPolicy:"A disallowed API was used by the prerendered page",RendererProcessCrashed:"The prerendered page crashed.",RendererProcessKilled:"The renderer process for the prerendering page was killed.",Download:"Download is disallowed in Prerender.",TriggerDestroyed:"Prerender is not activated and destroyed with the trigger.",NavigationNotCommitted:"The prerendering page is not committed in the end.",NavigationBadHttpStatus:"The initial prerendering navigation was not successful due to the server returning a non-200/204/205 status code.",ClientCertRequested:"The page is requesting client cert, which is not suitable for a hidden page like prerendering.",NavigationRequestNetworkError:"Encountered a network error during prerendering.",MaxNumOfRunningPrerendersExceeded:"Max number of prerendering exceeded.",CancelAllHostsForTesting:"CancelAllHostsForTesting.",DidFailLoad:"DidFailLoadWithError happened during prerendering.",Stop:"The tab is stopped.",SslCertificateError:"SSL certificate error.",LoginAuthRequested:"Prerender does not support auth requests from UI.",UaChangeRequiresReload:"Reload is needed after UserAgentOverride.",BlockedByClient:"Resource load is blocked by the client.",AudioOutputDeviceRequested:"Prerendering has not supported the AudioContext API yet.",MixedContent:"Prerendering is canceled by a mixed content frame.",TriggerBackgrounded:"The tab is in the background",EmbedderTriggeredAndSameOriginRedirected:"Prerendering triggered by Chrome internal (e.g., Omnibox prerendering) is canceled because the navigation is redirected to another same-origin page.",EmbedderTriggeredAndCrossOriginRedirected:"Prerendering triggered by Chrome internal (e.g., Omnibox prerendering) is is canceled because the navigation is redirected to another cross-origin page.",MemoryLimitExceeded:"Memory limit exceeded",FailToGetMemoryUsage:"Fail to get memory usage",DataSaverEnabled:"Data saver enabled",HasEffectiveUrl:"Has effective URL",ActivatedBeforeStarted:"Activated before started",InactivePageRestriction:"Inactive page restriction",StartFailed:"Start failed",DisallowedApiMethod:"Disallowed API method",PrerenderingOngoing:"Prerendering ongoing",CrossSiteRedirect:"Attempted to prerender a URL which redirected to a cross-site URL. Currently prerendering cross-site pages is disallowed.",CrossSiteNavigation:"The prerendered page navigated to a cross-site URL after loading. Currently prerendering cross-site pages is disallowed.",SameSiteCrossOriginRedirect:"Attempted to prerender a URL which redirected to a same-site cross-origin URL. Currently prerendering cross-origin pages is disallowed.",SameSiteCrossOriginNavigation:"The prerendered page navigated to a same-site cross-origin URL after loading. Currently prerendering cross-origin pages is disallowed.",SameSiteCrossOriginRedirectNotOptIn:"Attempted to prerender a URL which redirected to a same-site cross-origin URL. This is disallowed unless the destination site sends a Supports-Loading-Mode: credentialed-prerender header.",SameSiteCrossOriginNavigationNotOptIn:"The prerendered page navigated to a same-site cross-origin URL after loading. This is disallowed unless the destination site sends a Supports-Loading-Mode: credentialed-prerender header.",ActivationNavigationParameterMismatch:"The page was prerendered, but the navigation ended up being performed differently than the original prerender, so the prerendered page could not be activated."},Ne=e.i18n.registerUIStrings("panels/application/components/Prerender2.ts",$e),Ce=e.i18n.getLazilyComputedLocalizedString.bind(void 0,Ne),Ie={Activated:{name:Ce($e.Activated)},Destroyed:{name:Ce($e.Destroyed)},LowEndDevice:{name:Ce($e.LowEndDevice)},InvalidSchemeRedirect:{name:Ce($e.InvalidSchemeRedirect)},InvalidSchemeNavigation:{name:Ce($e.InvalidSchemeNavigation)},InProgressNavigation:{name:Ce($e.InProgressNavigation)},NavigationRequestBlockedByCsp:{name:Ce($e.NavigationRequestBlockedByCsp)},MainFrameNavigation:{name:Ce($e.MainFrameNavigation)},MojoBinderPolicy:{name:Ce($e.MojoBinderPolicy)},RendererProcessCrashed:{name:Ce($e.RendererProcessCrashed)},RendererProcessKilled:{name:Ce($e.RendererProcessKilled)},Download:{name:Ce($e.Download)},TriggerDestroyed:{name:Ce($e.TriggerDestroyed)},NavigationNotCommitted:{name:Ce($e.NavigationNotCommitted)},NavigationBadHttpStatus:{name:Ce($e.NavigationBadHttpStatus)},ClientCertRequested:{name:Ce($e.ClientCertRequested)},NavigationRequestNetworkError:{name:Ce($e.NavigationRequestNetworkError)},MaxNumOfRunningPrerendersExceeded:{name:Ce($e.MaxNumOfRunningPrerendersExceeded)},CancelAllHostsForTesting:{name:Ce($e.CancelAllHostsForTesting)},DidFailLoad:{name:Ce($e.DidFailLoad)},Stop:{name:Ce($e.Stop)},SslCertificateError:{name:Ce($e.SslCertificateError)},LoginAuthRequested:{name:Ce($e.LoginAuthRequested)},UaChangeRequiresReload:{name:Ce($e.UaChangeRequiresReload)},BlockedByClient:{name:Ce($e.BlockedByClient)},AudioOutputDeviceRequested:{name:Ce($e.AudioOutputDeviceRequested)},MixedContent:{name:Ce($e.MixedContent)},TriggerBackgrounded:{name:Ce($e.TriggerBackgrounded)},EmbedderTriggeredAndSameOriginRedirected:{name:Ce($e.EmbedderTriggeredAndSameOriginRedirected)},EmbedderTriggeredAndCrossOriginRedirected:{name:Ce($e.EmbedderTriggeredAndCrossOriginRedirected)},MemoryLimitExceeded:{name:Ce($e.MemoryLimitExceeded)},FailToGetMemoryUsage:{name:Ce($e.FailToGetMemoryUsage)},DataSaverEnabled:{name:Ce($e.DataSaverEnabled)},HasEffectiveUrl:{name:Ce($e.HasEffectiveUrl)},ActivatedBeforeStarted:{name:Ce($e.ActivatedBeforeStarted)},InactivePageRestriction:{name:Ce($e.InactivePageRestriction)},StartFailed:{name:Ce($e.StartFailed)},DisallowedApiMethod:{name:Ce($e.DisallowedApiMethod)},PrerenderingOngoing:{name:Ce($e.PrerenderingOngoing)},CrossSiteRedirect:{name:Ce($e.CrossSiteRedirect)},CrossSiteNavigation:{name:Ce($e.CrossSiteNavigation)},SameSiteCrossOriginRedirect:{name:Ce($e.SameSiteCrossOriginRedirect)},SameSiteCrossOriginNavigation:{name:Ce($e.SameSiteCrossOriginNavigation)},SameSiteCrossOriginRedirectNotOptIn:{name:Ce($e.SameSiteCrossOriginRedirectNotOptIn)},SameSiteCrossOriginNavigationNotOptIn:{name:Ce($e.SameSiteCrossOriginNavigationNotOptIn)},ActivationNavigationParameterMismatch:{name:Ce($e.ActivationNavigationParameterMismatch)}},Pe={additionalInformation:"Additional Information",thisAdditionalDebugging:"This additional (debugging) information is shown because the 'Protocol Monitor' experiment is enabled.",frameId:"Frame ID",document:"Document",url:"URL",clickToRevealInSourcesPanel:"Click to reveal in Sources panel",clickToRevealInNetworkPanel:"Click to reveal in Network panel",unreachableUrl:"Unreachable URL",clickToRevealInNetworkPanelMight:"Click to reveal in Network panel (might require page reload)",origin:"Origin",ownerElement:"Owner Element",clickToRevealInElementsPanel:"Click to reveal in Elements panel",adStatus:"Ad Status",rootDescription:"This frame has been identified as the root frame of an ad",root:"root",childDescription:"This frame has been identified as a child frame of an ad",child:"child",securityIsolation:"Security & Isolation",secureContext:"Secure Context",yes:"Yes",no:"No",crossoriginIsolated:"Cross-Origin Isolated",localhostIsAlwaysASecureContext:"`Localhost` is always a secure context",aFrameAncestorIsAnInsecure:"A frame ancestor is an insecure context",theFramesSchemeIsInsecure:"The frame's scheme is insecure",reportingTo:"reporting to",apiAvailability:"API availability",availabilityOfCertainApisDepends:"Availability of certain APIs depends on the document being cross-origin isolated.",availableTransferable:"available, transferable",availableNotTransferable:"available, not transferable",unavailable:"unavailable",sharedarraybufferConstructorIs:"`SharedArrayBuffer` constructor is available and `SABs` can be transferred via `postMessage`",sharedarraybufferConstructorIsAvailable:"`SharedArrayBuffer` constructor is available but `SABs` cannot be transferred via `postMessage`",willRequireCrossoriginIsolated:"⚠️ will require cross-origin isolated context in the future",requiresCrossoriginIsolated:"requires cross-origin isolated context",transferRequiresCrossoriginIsolatedPermission:"`SharedArrayBuffer` transfer requires enabling the permission policy:",available:"available",thePerformanceAPI:"The `performance.measureUserAgentSpecificMemory()` API is available",thePerformancemeasureuseragentspecificmemory:"The `performance.measureUserAgentSpecificMemory()` API is not available",measureMemory:"Measure Memory",learnMore:"Learn more",creationStackTrace:"Frame Creation `Stack Trace`",creationStackTraceExplanation:"This frame was created programmatically. The `stack trace` shows where this happened.",parentIsAdExplanation:"This frame is considered an ad frame because its parent frame is an ad frame.",matchedBlockingRuleExplanation:"This frame is considered an ad frame because its current (or previous) main document is an ad resource.",createdByAdScriptExplanation:"There was an ad script in the `(async) stack` when this frame was created. Examining the creation `stack trace` of this frame might provide more insight.",refresh:"Refresh",prerendering:"Prerendering",prerenderingStatus:"Prerendering Status",creatorAdScript:"Creator Ad Script"},De=e.i18n.registerUIStrings("panels/application/components/FrameDetailsView.ts",Pe),Me=e.i18n.getLocalizedString.bind(void 0,De),Ee=l.RenderCoordinator.RenderCoordinator.instance();class Ve extends n.LegacyWrapper.WrappableComponent{static litTagName=r.literal`devtools-resources-frame-details-view`;#e=this.attachShadow({mode:"open"});#J;#Y;#Q;#Z=!1;#ee=null;#O={policies:[],showDetails:!1};#te=new Te;#B=new g.Linkifier.Linkifier;#ie=null;constructor(e){super(),this.#J=e,this.#Q="",this.classList.add("overflow-auto"),i.TargetManager.TargetManager.instance().addModelListener(i.ChildTargetManager.ChildTargetManager,i.ChildTargetManager.Events.TargetInfoChanged,this.targetChanged,this),e.resourceTreeModel().addEventListener(i.ResourceTreeModel.Events.PrerenderingStatusUpdated,this.render,this),this.render()}targetChanged(e){const t=e.data;"prerender"===t.subtype&&(this.#Q=t.url,this.render())}connectedCallback(){this.#Z=a.Runtime.experiments.isEnabled("protocolMonitor"),this.#e.adoptedStyleSheets=[xe]}async render(){this.#ie=await(this.#J?.parentFrame()?.getAdScriptId(this.#J?.id))||null;const e=this.#ie?.debuggerId?await i.DebuggerModel.DebuggerModel.modelForDebuggerId(this.#ie?.debuggerId):null;this.#Y=e?.target(),!this.#ee&&this.#J&&(this.#ee=this.#J.getPermissionsPolicyState()),await Ee.write("FrameDetailsView render",(()=>{this.#J&&r.render(r.html` <${o.ReportView.Report.litTagName} .data="${{reportTitle:this.#J.displayName()}}"> ${this.#re()} ${this.#ae()} ${this.#oe()} ${this.#ne()} ${r.Directives.until(this.#ee?.then((e=>(this.#O.policies=e||[],r.html` <${de.litTagName} .data="${this.#O}"> </${de.litTagName}> `))),r.nothing)} ${this.#se()} ${this.#Z?this.#ce():r.nothing} </${o.ReportView.Report.litTagName}> `,this.#e,{host:this})}))}#ne(){if(!this.#J)return r.nothing;this.#te.classList.add("span-cols");const t=this.#J,i=()=>{t.getOriginTrials().then((e=>{this.#te.data={trials:e}}))};return i(),r.html` <${o.ReportView.ReportSectionHeader.litTagName}> ${e.i18n.lockedString("Origin Trials")} <${s.IconButton.IconButton.litTagName} class="inline-button" .data="${{clickHandler:i,groups:[{iconName:"refresh",text:Me(Pe.refresh),iconColor:"var(--icon-default-hover)",iconWidth:"14px",iconHeight:"14px"}]}}"> </${s.IconButton.IconButton.litTagName}> </${o.ReportView.ReportSectionHeader.litTagName}> ${this.#te} <${o.ReportView.ReportSectionDivider.litTagName}></${o.ReportView.ReportSectionDivider.litTagName}> `}#re(){return this.#J?r.html` <${o.ReportView.ReportSectionHeader.litTagName}>${Me(Pe.document)}</${o.ReportView.ReportSectionHeader.litTagName}> <${o.ReportView.ReportKey.litTagName}>${Me(Pe.url)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> <div class="inline-items"> ${this.#le()} ${this.#de()} <div class="text-ellipsis" title="${this.#J.url}">${this.#J.url}</div> </div> </${o.ReportView.ReportValue.litTagName}> ${this.#he()} ${this.#me()} ${r.Directives.until(this.#pe(),r.nothing)} ${this.#ge()} ${this.#ue()} <${o.ReportView.ReportSectionDivider.litTagName}></${o.ReportView.ReportSectionDivider.litTagName}> `:r.nothing}#le(){if(!this.#J||this.#J.unreachableUrl())return r.nothing;const e=this.#we(this.#J);return le("breakpoint-circle",Me(Pe.clickToRevealInSourcesPanel),(()=>w.Revealer.reveal(e)))}#de(){if(this.#J){const e=this.#J.resourceForURL(this.#J.url);if(e&&e.request){const t=e.request;return le("arrow-up-down-circle",Me(Pe.clickToRevealInNetworkPanel),(()=>{const e=a.Runtime.experiments.isEnabled(a.Runtime.ExperimentName.HEADER_OVERRIDES)?u.UIRequestLocation.UIRequestTabs.HeadersComponent:u.UIRequestLocation.UIRequestTabs.Headers,i=u.UIRequestLocation.UIRequestLocation.tab(t,e);return w.Revealer.reveal(i)}))}}return r.nothing}#we(e){for(const t of f.Workspace.WorkspaceImpl.instance().projects()){const i=k.NetworkProject.NetworkProject.getTargetForProject(t);if(i&&i===e.resourceTreeModel().target()){const i=t.uiSourceCodeForURL(e.url);if(i)return i}}return null}#he(){return this.#J&&this.#J.unreachableUrl()?r.html` <${o.ReportView.ReportKey.litTagName}>${Me(Pe.unreachableUrl)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> <div class="inline-items"> ${this.#ke()} <div class="text-ellipsis" title="${this.#J.unreachableUrl()}">${this.#J.unreachableUrl()}</div> </div> </${o.ReportView.ReportValue.litTagName}> `:r.nothing}#ke(){if(this.#J){const e=w.ParsedURL.ParsedURL.fromString(this.#J.unreachableUrl());if(e)return le("arrow-up-down-circle",Me(Pe.clickToRevealInNetworkPanelMight),(()=>{w.Revealer.reveal(u.UIFilter.UIRequestFilter.filters([{filterType:u.UIFilter.FilterType.Domain,filterValue:e.domain()},{filterType:null,filterValue:e.path}]))}))}return r.nothing}#me(){return this.#J&&this.#J.securityOrigin&&"://"!==this.#J.securityOrigin?r.html` <${o.ReportView.ReportKey.litTagName}>${Me(Pe.origin)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> <div class="text-ellipsis" title="${this.#J.securityOrigin}">${this.#J.securityOrigin}</div> </${o.ReportView.ReportValue.litTagName}> `:r.nothing}async#pe(){if(this.#J){const e=await this.#J.getOwnerDOMNodeOrDocument();if(e)return r.html` <${o.ReportView.ReportKey.litTagName}>${Me(Pe.ownerElement)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName} class="without-min-width"> <div class="inline-items"> <button class="link" role="link" tabindex="0" @mouseenter="${()=>this.#J?.highlight()}" @mouseleave="${()=>i.OverlayModel.OverlayModel.hideDOMNodeHighlight()}" @click="${()=>w.Revealer.reveal(e)}" title="${Me(Pe.clickToRevealInElementsPanel)}"> <${s.Icon.Icon.litTagName} .data="${{iconName:"code-circle",color:"var(--icon-link)",width:"16px",height:"16px"}}"> </${s.Icon.Icon.litTagName}> </button> <button class="link text-link" role="link" tabindex="0" title="${Me(Pe.clickToRevealInElementsPanel)}" @mouseenter="${()=>this.#J?.highlight()}" @mouseleave="${()=>i.OverlayModel.OverlayModel.hideDOMNodeHighlight()}" @click="${()=>w.Revealer.reveal(e)}"> &lt;${e.nodeName().toLocaleLowerCase()}> </button> </div> </${o.ReportView.ReportValue.litTagName}> `}return r.nothing}#ge(){const e=this.#J?.getCreationStackTraceData();return e&&e.creationStackTrace?r.html` <${o.ReportView.ReportKey.litTagName} title="${Me(Pe.creationStackTraceExplanation)}">${Me(Pe.creationStackTrace)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> <${ie.litTagName} .data="${{frame:this.#J,buildStackTraceRows:g.JSPresentationUtils.buildStackTraceRows}}"> </${ie.litTagName}> </${o.ReportView.ReportValue.litTagName}> `:r.nothing}#be(e){switch(e){case"child":return{value:Me(Pe.child),description:Me(Pe.childDescription)};case"root":return{value:Me(Pe.root),description:Me(Pe.rootDescription)}}}#fe(e){switch(e){case"CreatedByAdScript":return Me(Pe.createdByAdScriptExplanation);case"MatchedBlockingRule":return Me(Pe.matchedBlockingRuleExplanation);case"ParentIsAd":return Me(Pe.parentIsAdExplanation)}}#ue(){if(!this.#J)return r.nothing;const e=this.#J.adFrameType();if("none"===e)return r.nothing;const t=this.#be(e),i=[r.html`<div title="${t.description}">${t.value}</div>`];for(const e of this.#J.adFrameStatus()?.explanations||[])i.push(r.html`<div>${this.#fe(e)}</div>`);const a=this.#Y?this.#B.linkifyScriptLocation(this.#Y,this.#ie?.scriptId||null,b.DevToolsPath.EmptyUrlString,void 0,void 0):null;return r.html` <${o.ReportView.ReportKey.litTagName}>${Me(Pe.adStatus)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> <${h.ExpandableList.ExpandableList.litTagName} .data="${{rows:i}}"></${h.ExpandableList.ExpandableList.litTagName}></${o.ReportView.ReportValue.litTagName}> ${this.#Y?r.html` <${o.ReportView.ReportKey.litTagName}>${Me(Pe.creatorAdScript)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName} class="ad-script-link">${a}</${o.ReportView.ReportValue.litTagName}> `:r.nothing} `}#ae(){return this.#J?r.html` <${o.ReportView.ReportSectionHeader.litTagName}>${Me(Pe.securityIsolation)}</${o.ReportView.ReportSectionHeader.litTagName}> <${o.ReportView.ReportKey.litTagName}>${Me(Pe.secureContext)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> ${this.#J.isSecureContext()?Me(Pe.yes):Me(Pe.no)}\xA0${this.#ve()} </${o.ReportView.ReportValue.litTagName}> <${o.ReportView.ReportKey.litTagName}>${Me(Pe.crossoriginIsolated)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> ${this.#J.isCrossOriginIsolated()?Me(Pe.yes):Me(Pe.no)} </${o.ReportView.ReportValue.litTagName}> ${r.Directives.until(this.#Se(),r.nothing)} <${o.ReportView.ReportSectionDivider.litTagName}></${o.ReportView.ReportSectionDivider.litTagName}> `:r.nothing}#ve(){const e=this.#ye();return e?r.html`<span class="inline-comment">${e}</span>`:r.nothing}#ye(){switch(this.#J?.getSecureContextType()){case"Secure":return null;case"SecureLocalhost":return Me(Pe.localhostIsAlwaysASecureContext);case"InsecureAncestor":return Me(Pe.aFrameAncestorIsAnInsecure);case"InsecureScheme":return Me(Pe.theFramesSchemeIsInsecure)}return null}async#Se(){if(this.#J){const t=this.#J.resourceTreeModel().target().model(i.NetworkManager.NetworkManager),a=t&&await t.getSecurityIsolationStatus(this.#J.id);if(a)return r.html` ${this.#Te(a.coep,e.i18n.lockedString("Cross-Origin Embedder Policy (COEP)"),"None")} ${this.#Te(a.coop,e.i18n.lockedString("Cross-Origin Opener Policy (COOP)"),"UnsafeNone")} `}return r.nothing}#Te(e,t,i){if(!e)return r.nothing;const a=e.value!==i,n=!a&&e.reportOnlyValue!==i,s=a?e.reportingEndpoint:e.reportOnlyReportingEndpoint;return r.html` <${o.ReportView.ReportKey.litTagName}>${t}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> ${a?e.value:e.reportOnlyValue} ${n?r.html`<span class="inline-comment">report-only</span>`:r.nothing} ${s?r.html`<span class="inline-name">${Me(Pe.reportingTo)}</span>${s}`:r.nothing} </${o.ReportView.ReportValue.litTagName}> `}#oe(){return this.#J?r.html` <${o.ReportView.ReportSectionHeader.litTagName}>${Me(Pe.apiAvailability)}</${o.ReportView.ReportSectionHeader.litTagName}> <div class="span-cols"> ${Me(Pe.availabilityOfCertainApisDepends)} <x-link href="https://web.dev/why-coop-coep/" class="link">${Me(Pe.learnMore)}</x-link> </div> ${this.#Re()} ${this.#xe()} <${o.ReportView.ReportSectionDivider.litTagName}></${o.ReportView.ReportSectionDivider.litTagName}> `:r.nothing}#Re(){if(this.#J){const e=this.#J.getGatedAPIFeatures();if(e){const t=e.includes("SharedArrayBuffers"),i=t&&e.includes("SharedArrayBuffersTransferAllowed"),a=Me(i?Pe.availableTransferable:t?Pe.availableNotTransferable:Pe.unavailable),n=i?Me(Pe.sharedarraybufferConstructorIs):t?Me(Pe.sharedarraybufferConstructorIsAvailable):"";function s(e){switch(e.getCrossOriginIsolatedContextType()){case"Isolated":return r.nothing;case"NotIsolated":return t?r.html`<span class="inline-comment">${Me(Pe.willRequireCrossoriginIsolated)}</span>`:r.html`<span class="inline-comment">${Me(Pe.requiresCrossoriginIsolated)}</span>`;case"NotIsolatedFeatureDisabled":if(!i)return r.html`<span class="inline-comment">${Me(Pe.transferRequiresCrossoriginIsolatedPermission)} <code>cross-origin-isolated</code></span>`}return r.nothing}return r.html` <${o.ReportView.ReportKey.litTagName}>SharedArrayBuffers</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName} title="${n}"> ${a}\xA0${s(this.#J)} </${o.ReportView.ReportValue.litTagName}> `}}return r.nothing}#xe(){if(this.#J){const e=this.#J.isCrossOriginIsolated(),t=Me(e?Pe.available:Pe.unavailable),i=Me(e?Pe.thePerformanceAPI:Pe.thePerformancemeasureuseragentspecificmemory);return r.html` <${o.ReportView.ReportKey.litTagName}>${Me(Pe.measureMemory)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> <span title="${i}">${t}</span>\xA0<x-link class="link" href="https://web.dev/monitor-total-page-memory-usage/">${Me(Pe.learnMore)}</x-link> </${o.ReportView.ReportValue.litTagName}> `}return r.nothing}#se(){if(this.#Q&&""!==this.#Q){const e=Ie.PrerenderingOngoing.name()+" "+this.#Q;return r.html` <${o.ReportView.ReportSectionHeader.litTagName}> ${Me(Pe.prerendering)}</${o.ReportView.ReportSectionHeader.litTagName}> <${o.ReportView.ReportKey.litTagName}>${Me(Pe.prerenderingStatus)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> <div class="text-ellipsis" title="${e}">${e}</div> </${o.ReportView.ReportValue.litTagName}> <${o.ReportView.ReportSectionDivider.litTagName}></${o.ReportView.ReportSectionDivider.litTagName}>`}if(!this.#J||!this.#J.prerenderFinalStatus)return r.nothing;const e=Ie[this.#J.prerenderFinalStatus].name();if(this.#J.prerenderDisallowedApiMethod){const t=Ie.DisallowedApiMethod.name();return r.html` <${o.ReportView.ReportSectionHeader.litTagName}> ${Me(Pe.prerendering)}</${o.ReportView.ReportSectionHeader.litTagName}> <${o.ReportView.ReportKey.litTagName}>${Me(Pe.prerenderingStatus)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> <div class="text-ellipsis" title="${e}">${e}</div> </${o.ReportView.ReportValue.litTagName}> <${o.ReportView.ReportKey.litTagName}>${t}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> <div class="text-ellipsis" title="${this.#J.prerenderDisallowedApiMethod}"> ${this.#J.prerenderDisallowedApiMethod} </div> </${o.ReportView.ReportValue.litTagName}> <${o.ReportView.ReportSectionDivider.litTagName}></${o.ReportView.ReportSectionDivider.litTagName}>`}return r.html` <${o.ReportView.ReportSectionHeader.litTagName}> ${Me(Pe.prerendering)}</${o.ReportView.ReportSectionHeader.litTagName}> <${o.ReportView.ReportKey.litTagName}>${Me(Pe.prerenderingStatus)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> <div class="text-ellipsis" title="${e}">${e}</div> </${o.ReportView.ReportValue.litTagName}> <${o.ReportView.ReportSectionDivider.litTagName}></${o.ReportView.ReportSectionDivider.litTagName}>`}#ce(){return this.#J?r.html` <${o.ReportView.ReportSectionHeader.litTagName} title="${Me(Pe.thisAdditionalDebugging)}">${Me(Pe.additionalInformation)}</${o.ReportView.ReportSectionHeader.litTagName}> <${o.ReportView.ReportKey.litTagName}>${Me(Pe.frameId)}</${o.ReportView.ReportKey.litTagName}> <${o.ReportView.ReportValue.litTagName}> <div class="text-ellipsis" title="${this.#J.id}">${this.#J.id}</div> </${o.ReportView.ReportValue.litTagName}> <${o.ReportView.ReportSectionDivider.litTagName}></${o.ReportView.ReportSectionDivider.litTagName}> `:r.nothing}}c.CustomElements.defineComponent("devtools-resources-frame-details-view",Ve);var Be=Object.freeze({__proto__:null,FrameDetailsReportView:Ve});const Fe=new CSSStyleSheet;Fe.replaceSync(":host{padding:20px}.heading{font-size:15px}devtools-data-grid-controller{border:1px solid var(--color-details-hairline);margin-top:20px}.info-icon{vertical-align:text-bottom;height:14px}.no-events-message{margin-top:20px}\n/*# sourceURL=interestGroupAccessGrid.css */\n");const Ae={allInterestGroupStorageEvents:"All interest group storage events.",eventTime:"Event Time",eventType:"Access Type",groupOwner:"Owner",groupName:"Name",noEvents:"No interest group events recorded."},Le=e.i18n.registerUIStrings("panels/application/components/InterestGroupAccessGrid.ts",Ae),He=e.i18n.getLocalizedString.bind(void 0,Le);class Oe extends HTMLElement{static litTagName=r.literal`devtools-interest-group-access-grid`;#e=this.attachShadow({mode:"open"});#$e=[];connectedCallback(){this.#e.adoptedStyleSheets=[Fe],this.#T()}set data(e){this.#$e=e,this.#T()}#T(){r.render(r.html` <div> <span class="heading">Interest Groups</span> <${s.Icon.Icon.litTagName} class="info-icon" title="${He(Ae.allInterestGroupStorageEvents)}" .data="${{iconName:"info",color:"var(--icon-default)",width:"16px"}}"> </${s.Icon.Icon.litTagName}> ${this.#Ne()} </div> `,this.#e,{host:this})}#Ne(){if(0===this.#$e.length)return r.html`<div class="no-events-message">${He(Ae.noEvents)}</div>`;const e={columns:[{id:"event-time",title:He(Ae.eventTime),widthWeighting:10,hideable:!1,visible:!0,sortable:!0},{id:"event-type",title:He(Ae.eventType),widthWeighting:5,hideable:!1,visible:!0,sortable:!0},{id:"event-group-owner",title:He(Ae.groupOwner),widthWeighting:10,hideable:!1,visible:!0,sortable:!0},{id:"event-group-name",title:He(Ae.groupName),widthWeighting:10,hideable:!1,visible:!0,sortable:!0}],rows:this.#Ce(),initialSort:{columnId:"event-time",direction:"ASC"}};return r.html` <${p.DataGridController.DataGridController.litTagName} .data="${e}"></${p.DataGridController.DataGridController.litTagName}> `}#Ce(){return this.#$e.map((e=>({cells:[{columnId:"event-time",value:e.accessTime,renderer:this.#Ie.bind(this)},{columnId:"event-type",value:e.type},{columnId:"event-group-owner",value:e.ownerOrigin},{columnId:"event-group-name",value:e.name}]})))}#Ie(e){const t=new Date(1e3*e);return r.html`${t.toLocaleString()}`}}c.CustomElements.defineComponent("devtools-interest-group-access-grid",Oe);var Ue=Object.freeze({__proto__:null,i18nString:He,InterestGroupAccessGrid:Oe});const qe=new CSSStyleSheet;qe.replaceSync('*{box-sizing:border-box;min-width:0;min-height:0}:root{height:100%;overflow:hidden;--legacy-accent-color:#1a73e8;--legacy-accent-fg-color:#1a73e8;--legacy-accent-color-hover:#3b86e8;--legacy-accent-fg-color-hover:#1567d3;--legacy-active-control-bg-color:#5a5a5a;--legacy-focus-bg-color:hsl(214deg 40% 92%);--legacy-focus-ring-inactive-shadow-color:#e0e0e0;--legacy-input-validation-error:#db1600;--legacy-toolbar-hover-bg-color:#eaeaea;--legacy-selection-fg-color:#fff;--legacy-selection-bg-color:var(--legacy-accent-color);--legacy-selection-inactive-fg-color:#5a5a5a;--legacy-selection-inactive-bg-color:#dadada;--legacy-tab-selected-fg-color:#333;--legacy-divider-border:1px solid var(--color-details-hairline);--legacy-focus-ring-inactive-shadow:0 0 0 1px var(--legacy-focus-ring-inactive-shadow-color);--legacy-focus-ring-active-shadow:0 0 0 1px var(--legacy-accent-color);--legacy-item-selection-bg-color:#cfe8fc;--legacy-item-selection-inactive-bg-color:#e0e0e0;--item-hover-color:rgb(56 121 217/10%);--monospace-font-size:10px;--monospace-font-family:monospace;--source-code-font-size:11px;--source-code-font-family:monospace;--override-force-white-icons-background:#fafafa}.-theme-with-dark-background{color-scheme:dark;--legacy-accent-color:#0e639c;--legacy-accent-fg-color:#ccc;--legacy-accent-fg-color-hover:#fff;--legacy-accent-color-hover:rgb(17 119 187);--legacy-active-control-bg-color:#cdcdcd;--legacy-focus-bg-color:hsl(214deg 19% 27%);--legacy-focus-ring-inactive-shadow-color:#5a5a5a;--legacy-toolbar-hover-bg-color:#202020;--legacy-selection-fg-color:#cdcdcd;--legacy-selection-inactive-fg-color:#cdcdcd;--legacy-selection-inactive-bg-color:hsl(0deg 0% 28%);--legacy-tab-selected-fg-color:#eaeaea;--legacy-focus-ring-inactive-shadow:0 0 0 1px var(--legacy-focus-ring-inactive-shadow-color);--legacy-item-selection-bg-color:hsl(207deg 88% 22%);--legacy-item-selection-inactive-bg-color:#454545}body{height:100%;width:100%;position:relative;overflow:hidden;margin:0;cursor:default;font-family:".SFNSDisplay-Regular","Helvetica Neue","Lucida Grande",sans-serif;font-size:12px;tab-size:4;user-select:none;color:var(--color-text-primary);background:var(--color-background)}.platform-linux{font-family:Roboto,Ubuntu,Arial,sans-serif}.platform-mac{font-family:".SFNSDisplay-Regular","Helvetica Neue","Lucida Grande",sans-serif}.platform-mac,\n.platform-linux{--override-text-color:rgb(48 57 66);color:var(--override-text-color)}.platform-windows{font-family:"Segoe UI",Tahoma,sans-serif}:focus{outline-width:0}.platform-mac,\n:host-context(.platform-mac){--monospace-font-size:11px;--monospace-font-family:menlo,monospace;--source-code-font-size:11px;--source-code-font-family:menlo,monospace}.platform-windows,\n:host-context(.platform-windows){--monospace-font-size:12px;--monospace-font-family:consolas,lucida console,courier new,monospace;--source-code-font-size:12px;--source-code-font-family:consolas,lucida console,courier new,monospace}.platform-linux,\n:host-context(.platform-linux){--monospace-font-size:11px;--monospace-font-family:dejavu sans mono,monospace;--source-code-font-size:11px;--source-code-font-family:dejavu sans mono,monospace}.-theme-with-dark-background .platform-linux,\n.-theme-with-dark-background .platform-mac,\n:host-context(.-theme-with-dark-background) .platform-linux,\n:host-context(.-theme-with-dark-background) .platform-mac{--override-text-color:rgb(189 198 207)}.monospace{font-family:var(--monospace-font-family);font-size:var(--monospace-font-size)!important}.source-code{font-family:var(--source-code-font-family);font-size:var(--source-code-font-size)!important;white-space:pre-wrap}img{-webkit-user-drag:none}iframe,\na img{border:none}.fill{position:absolute;top:0;left:0;right:0;bottom:0}iframe.fill{width:100%;height:100%}.widget{position:relative;flex:auto;contain:style}.hbox{display:flex;flex-direction:row!important;position:relative}.vbox{display:flex;flex-direction:column!important;position:relative}.view-container > .toolbar{border-bottom:1px solid var(--color-details-hairline)}.flex-auto{flex:auto}.flex-none{flex:none}.flex-centered{display:flex;align-items:center;justify-content:center}.overflow-auto{overflow:auto;background-color:var(--color-background)}iframe.widget{position:absolute;width:100%;height:100%;left:0;right:0;top:0;bottom:0}.hidden{display:none!important}.highlighted-search-result{--override-highlighted-search-result-background-color:rgb(255 255 0/80%);border-radius:1px;background-color:var(--override-highlighted-search-result-background-color);outline:1px solid var(--override-highlighted-search-result-background-color)}.-theme-with-dark-background .highlighted-search-result,\n:host-context(.-theme-with-dark-background) .highlighted-search-result{--override-highlighted-search-result-background-color:hsl(133deg 100% 30%);color:#333}.link{cursor:pointer;text-decoration:underline;color:var(--color-link);outline-offset:2px}button,\ninput,\nselect{font-family:inherit;font-size:inherit}select option,\nselect optgroup,\ninput{background-color:var(--color-background)}input{color:inherit}input::placeholder{--override-input-placeholder-color:rgb(0 0 0/54%);color:var(--override-input-placeholder-color)}.-theme-with-dark-background input::placeholder,\n:host-context(.-theme-with-dark-background) input::placeholder{--override-input-placeholder-color:rgb(230 230 230/54%)}:host-context(.-theme-with-dark-background) input[type="checkbox"]:not(.-theme-preserve){accent-color:var(--color-checkbox-accent-color)}.harmony-input:not([type]),\n.harmony-input[type="number"],\n.harmony-input[type="text"]{padding:3px 6px;height:24px;border:none;box-shadow:var(--legacy-focus-ring-inactive-shadow)}.harmony-input:not([type]).error-input,\n.harmony-input[type="number"].error-input,\n.harmony-input[type="text"].error-input,\n.harmony-input:not([type]):invalid,\n.harmony-input[type="number"]:invalid,\n.harmony-input[type="text"]:invalid{box-shadow:0 0 0 1px var(--color-red)}.harmony-input:not([type]):not(.error-input):not(:invalid):hover,\n.harmony-input[type="number"]:not(.error-input):not(:invalid):hover,\n.harmony-input[type="text"]:not(.error-input):not(:invalid):hover{box-shadow:var(--legacy-focus-ring-inactive-shadow)}.harmony-input:not([type]):not(.error-input):not(:invalid):focus,\n.harmony-input[type="number"]:not(.error-input):not(:invalid):focus,\n.harmony-input[type="text"]:not(.error-input):not(:invalid):focus{box-shadow:var(--legacy-focus-ring-active-shadow)}.highlighted-search-result.current-search-result{--override-current-search-result-background-color:rgb(255 127 0/80%);border-radius:1px;padding:1px;margin:-1px;background-color:var(--override-current-search-result-background-color)}.dimmed{opacity:60%}.editing{box-shadow:var(--drop-shadow);background-color:var(--color-background);text-overflow:clip!important;padding-left:2px;margin-left:-2px;padding-right:2px;margin-right:-2px;margin-bottom:-1px;padding-bottom:1px;opacity:100%!important}.editing,\n.editing *{color:var(--color-text-primary)!important;text-decoration:none!important}.chrome-select{--override-chrome-select-border-color:rgb(0 0 0/20%);appearance:none;user-select:none;border:1px solid var(--override-chrome-select-border-color);border-radius:2px;color:var(--color-text-primary);font:inherit;margin:0;outline:none;padding-right:20px;padding-left:6px;background-image:var(--image-file-arrow-drop-down-light);background-color:var(--color-background-elevation-0);background-position:right center;background-repeat:no-repeat;min-height:24px;min-width:80px}.chrome-select:disabled{opacity:38%}.-theme-with-dark-background .chrome-select,\n:host-context(.-theme-with-dark-background) .chrome-select{--override-chrome-select-border-color:rgb(230 230 230/20%);background-image:var(--image-file-arrow-drop-down-dark)}.chrome-select:enabled:active,\n.chrome-select:enabled:focus,\n.chrome-select:enabled:hover{--override-select-box-shadow:0 0 0 2px var(--color-button-outline-focus);background-color:var(--color-background-elevation-1);box-shadow:var(--override-select-box-shadow)}.chrome-select:enabled:active{background-color:var(--color-background-elevation-2)}.chrome-select:enabled:focus{border-color:transparent}@media (forced-colors: active) and (prefers-color-scheme: light){.chrome-select{background-image:var(--image-file-arrow-drop-down-light)}.-theme-with-dark-background .chrome-select,\n  :host-context(.-theme-with-dark-background) .chrome-select{background-image:var(--image-file-arrow-drop-down-light)}}@media (forced-colors: active) and (prefers-color-scheme: dark){.chrome-select{background-image:var(--image-file-arrow-drop-down-dark)}.-theme-with-dark-background .chrome-select,\n  :host-context(.-theme-with-dark-background) .chrome-select{background-image:var(--image-file-arrow-drop-down-dark)}}.-theme-with-dark-background .chrome-select:enabled:active,\n.-theme-with-dark-background .chrome-select:enabled:focus,\n.-theme-with-dark-background .chrome-select:enabled:hover,\n:host-context(.-theme-with-dark-background) .chrome-select:enabled:active,\n:host-context(.-theme-with-dark-background) .chrome-select:enabled:focus,\n:host-context(.-theme-with-dark-background) .chrome-select:enabled:hover{--override-select-box-shadow:0 0 0 2px var(--color-button-outline-focus)}.chrome-select-label{margin:0 22px;flex:none}.chrome-select-label p p{margin-top:0;color:var(--color-text-secondary)}.settings-select{margin:0}.chrome-select optgroup,\n.chrome-select option{background-color:var(--color-background-elevation-1);color:var(--color-text-primary)}.gray-info-message{text-align:center;font-style:italic;padding:6px;color:var(--color-text-secondary);white-space:nowrap}span[is="dt-icon-label"]{flex:none}.full-widget-dimmed-banner a{color:inherit}.full-widget-dimmed-banner{color:var(--color-text-secondary);background-color:var(--color-background);display:flex;justify-content:center;align-items:center;text-align:center;padding:20px;position:absolute;top:0;right:0;bottom:0;left:0;font-size:13px;overflow:auto;z-index:500}[is="ui-icon"]{display:inline-block;flex-shrink:0}.-theme-with-dark-background [is="ui-icon"].icon-invert,\n:host-context(.-theme-with-dark-background) [is="ui-icon"].icon-invert{filter:invert(80%) hue-rotate(180deg)}[is="ui-icon"].icon-mask{background-color:var(--icon-default);-webkit-mask-position:var(--spritesheet-position)}.-theme-with-dark-background [is="ui-icon"].icon-mask,\n:host-context(.-theme-with-dark-background) [is="ui-icon"].icon-mask{--override-icon-mask-background-color:rgb(145 145 145)}[is="ui-icon"]:not(.icon-mask){background-position:var(--spritesheet-position)}.spritesheet-smallicons:not(.icon-mask){background-image:var(--image-file-smallIcons)}.spritesheet-smallicons.icon-mask{-webkit-mask-image:var(--image-file-smallIcons)}.spritesheet-largeicons:not(.icon-mask){background-image:var(--image-file-largeIcons)}.spritesheet-largeicons.icon-mask{-webkit-mask-image:var(--image-file-largeIcons)}.spritesheet-mediumicons:not(.icon-mask){background-image:var(--image-file-mediumIcons)}.spritesheet-mediumicons.icon-mask{-webkit-mask-image:var(--image-file-mediumIcons)}.spritesheet-arrowicons{background-image:var(--image-file-popoverArrows)}.spritesheet-3d-center.icon-mask{-webkit-mask-image:var(--image-file-3d-center)}.spritesheet-3d-pan.icon-mask{-webkit-mask-image:var(--image-file-3d-pan)}.spritesheet-3d-rotate.icon-mask{-webkit-mask-image:var(--image-file-3d-rotate)}.spritesheet-arrow-up-down-circle.icon-mask{-webkit-mask-image:var(--image-file-arrow-up-down-circle)}.spritesheet-arrow-up-down.icon-mask{-webkit-mask-image:var(--image-file-arrow-up-down)}.spritesheet-bell.icon-mask{-webkit-mask-image:var(--image-file-bell)}.spritesheet-bezier-curve-filled.icon-mask{-webkit-mask-image:var(--image-file-bezier-curve-filled)}.spritesheet-bin.icon-mask{-webkit-mask-image:var(--image-file-bin)}.spritesheet-bottom-panel-close.icon-mask{-webkit-mask-image:var(--image-file-bottom-panel-close)}.spritesheet-bottom-panel-open.icon-mask{-webkit-mask-image:var(--image-file-bottom-panel-open)}.spritesheet-brackets.icon-mask{-webkit-mask-image:var(--image-file-brackets)}.spritesheet-breakpoint-crossed-filled.icon-mask{-webkit-mask-image:var(--image-file-breakpoint-crossed-filled)}.spritesheet-breakpoint-crossed.icon-mask{-webkit-mask-image:var(--image-file-breakpoint-crossed)}.spritesheet-brush-filled.icon-mask{-webkit-mask-image:var(--image-file-brush-filled)}.spritesheet-brush.icon-mask{-webkit-mask-image:var(--image-file-brush)}.spritesheet-bug.icon-mask{-webkit-mask-image:var(--image-file-bug)}.spritesheet-check-double.icon-mask{-webkit-mask-image:var(--image-file-check-double)}.spritesheet-checkmark.icon-mask{-webkit-mask-image:var(--image-file-checkmark)}.spritesheet-chevron-double-right.icon-mask{-webkit-mask-image:var(--image-file-chevron-double-right)}.spritesheet-chevron-down.icon-mask{-webkit-mask-image:var(--image-file-chevron-down)}.spritesheet-chevron-up.icon-mask{-webkit-mask-image:var(--image-file-chevron-up)}.spritesheet-clear-list.icon-mask{-webkit-mask-image:var(--image-file-clear-list)}.spritesheet-clear.icon-mask{-webkit-mask-image:var(--image-file-clear)}.spritesheet-cloud.icon-mask{-webkit-mask-image:var(--image-file-cloud)}.spritesheet-code-circle.icon-mask{-webkit-mask-image:var(--image-file-code-circle)}.spritesheet-color-picker-filled.icon-mask{-webkit-mask-image:var(--image-file-color-picker-filled)}.spritesheet-color-picker.icon-mask{-webkit-mask-image:var(--image-file-color-picker)}.spritesheet-cookie.icon-mask{-webkit-mask-image:var(--image-file-cookie)}.spritesheet-copy.icon-mask{-webkit-mask-image:var(--image-file-copy)}.spritesheet-credit-card.icon-mask{-webkit-mask-image:var(--image-file-credit-card)}.spritesheet-cross-circle.icon-mask{-webkit-mask-image:var(--image-file-cross-circle)}.spritesheet-cross.icon-mask{-webkit-mask-image:var(--image-file-cross)}.spritesheet-custom-typography.icon-mask{-webkit-mask-image:var(--image-file-custom-typography)}.spritesheet-database.icon-mask{-webkit-mask-image:var(--image-file-database)}.spritesheet-device-fold.icon-mask{-webkit-mask-image:var(--image-file-device-fold)}.spritesheet-devices.icon-mask{-webkit-mask-image:var(--image-file-devices)}.spritesheet-dock-bottom.icon-mask{-webkit-mask-image:var(--image-file-dock-bottom)}.spritesheet-dock-left.icon-mask{-webkit-mask-image:var(--image-file-dock-left)}.spritesheet-dock-right.icon-mask{-webkit-mask-image:var(--image-file-dock-right)}.spritesheet-dock-window.icon-mask{-webkit-mask-image:var(--image-file-dock-window)}.spritesheet-document.icon-mask{-webkit-mask-image:var(--image-file-document)}.spritesheet-dots-vertical.icon-mask{-webkit-mask-image:var(--image-file-dots-vertical)}.spritesheet-download.icon-mask{-webkit-mask-image:var(--image-file-download)}.spritesheet-edit.icon-mask{-webkit-mask-image:var(--image-file-edit)}.spritesheet-experiment-check.icon-mask{-webkit-mask-image:var(--image-file-experiment-check)}.spritesheet-eye.icon-mask{-webkit-mask-image:var(--image-file-eye)}.spritesheet-filter-clear.icon-mask{-webkit-mask-image:var(--image-file-filter-clear)}.spritesheet-filter-filled.icon-mask{-webkit-mask-image:var(--image-file-filter-filled)}.spritesheet-filter.icon-mask{-webkit-mask-image:var(--image-file-filter)}.spritesheet-frame-crossed.icon-mask{-webkit-mask-image:var(--image-file-frame-crossed)}.spritesheet-frame.icon-mask{-webkit-mask-image:var(--image-file-frame)}.spritesheet-gear-filled.icon-mask{-webkit-mask-image:var(--image-file-gear-filled)}.spritesheet-gear.icon-mask{-webkit-mask-image:var(--image-file-gear)}.spritesheet-gears.icon-mask{-webkit-mask-image:var(--image-file-gears)}.spritesheet-heap-snapshot.icon-mask{-webkit-mask-image:var(--image-file-heap-snapshot)}.spritesheet-heap-snapshots.icon-mask{-webkit-mask-image:var(--image-file-heap-snapshots)}.spritesheet-iframe-crossed.icon-mask{-webkit-mask-image:var(--image-file-iframe-crossed)}.spritesheet-iframe.icon-mask{-webkit-mask-image:var(--image-file-iframe)}.spritesheet-import.icon-mask{-webkit-mask-image:var(--image-file-import)}.spritesheet-info.icon-mask{-webkit-mask-image:var(--image-file-info)}.spritesheet-keyboard-pen.icon-mask{-webkit-mask-image:var(--image-file-keyboard-pen)}.spritesheet-layers-filled.icon-mask{-webkit-mask-image:var(--image-file-layers-filled)}.spritesheet-layers.icon-mask{-webkit-mask-image:var(--image-file-layers)}.spritesheet-left-panel-close.icon-mask{-webkit-mask-image:var(--image-file-left-panel-close)}.spritesheet-left-panel-open.icon-mask{-webkit-mask-image:var(--image-file-left-panel-open)}.spritesheet-list.icon-mask{-webkit-mask-image:var(--image-file-list)}.spritesheet-pause.icon-mask{-webkit-mask-image:var(--image-file-pause)}.spritesheet-play.icon-mask{-webkit-mask-image:var(--image-file-play)}.spritesheet-plus.icon-mask{-webkit-mask-image:var(--image-file-plus)}.spritesheet-popup.icon-mask{-webkit-mask-image:var(--image-file-popup)}.spritesheet-profile.icon-mask{-webkit-mask-image:var(--image-file-profile)}.spritesheet-record-start.icon-mask{-webkit-mask-image:var(--image-file-record-start)}.spritesheet-record-stop.icon-mask{-webkit-mask-image:var(--image-file-record-stop)}.spritesheet-refresh.icon-mask{-webkit-mask-image:var(--image-file-refresh)}.spritesheet-replace.icon-mask{-webkit-mask-image:var(--image-file-replace)}.spritesheet-resume.icon-mask{-webkit-mask-image:var(--image-file-resume)}.spritesheet-right-panel-close.icon-mask{-webkit-mask-image:var(--image-file-right-panel-close)}.spritesheet-right-panel-open.icon-mask{-webkit-mask-image:var(--image-file-right-panel-open)}.spritesheet-screen-rotation.icon-mask{-webkit-mask-image:var(--image-file-screen-rotation)}.spritesheet-search.icon-mask{-webkit-mask-image:var(--image-file-search)}.spritesheet-select-element.icon-mask{-webkit-mask-image:var(--image-file-select-element)}.spritesheet-shadow.icon-mask{-webkit-mask-image:var(--image-file-shadow)}.spritesheet-step-into.icon-mask{-webkit-mask-image:var(--image-file-step-into)}.spritesheet-step-out.icon-mask{-webkit-mask-image:var(--image-file-step-out)}.spritesheet-step-over.icon-mask{-webkit-mask-image:var(--image-file-step-over)}.spritesheet-step.icon-mask{-webkit-mask-image:var(--image-file-step)}.spritesheet-stop.icon-mask{-webkit-mask-image:var(--image-file-stop)}.spritesheet-sync.icon-mask{-webkit-mask-image:var(--image-file-sync)}.spritesheet-table.icon-mask{-webkit-mask-image:var(--image-file-table)}.spritesheet-top-panel-close.icon-mask{-webkit-mask-image:var(--image-file-top-panel-close)}.spritesheet-top-panel-open.icon-mask{-webkit-mask-image:var(--image-file-top-panel-open)}.spritesheet-replay.icon-mask{-webkit-mask-image:var(--image-file-replay)}.spritesheet-triangle-bottom-right.icon-mask{-webkit-mask-image:var(--image-file-triangle-bottom-right)}.spritesheet-triangle-down.icon-mask{-webkit-mask-image:var(--image-file-triangle-down)}.spritesheet-triangle-left.icon-mask{-webkit-mask-image:var(--image-file-triangle-left)}.spritesheet-triangle-right.icon-mask{-webkit-mask-image:var(--image-file-triangle-right)}.spritesheet-triangle-up.icon-mask{-webkit-mask-image:var(--image-file-triangle-up)}.spritesheet-undo.icon-mask{-webkit-mask-image:var(--image-file-undo)}.spritesheet-warning.icon-mask{-webkit-mask-image:var(--image-file-warning)}.spritesheet-watch.icon-mask{-webkit-mask-image:var(--image-file-watch)}.force-white-icons [is="ui-icon"].spritesheet-smallicons,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-smallicons,\n[is="ui-icon"].force-white-icons.spritesheet-smallicons,\n.-theme-preserve{-webkit-mask-image:var(--image-file-smallIcons);-webkit-mask-position:var(--spritesheet-position);background:var(--override-force-white-icons-background)!important}.force-white-icons [is="ui-icon"].spritesheet-largeicons,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-largeicons,\n[is="ui-icon"].force-white-icons.spritesheet-largeicons,\n.-theme-preserve{-webkit-mask-image:var(--image-file-largeIcons);-webkit-mask-position:var(--spritesheet-position);background:var(--override-force-white-icons-background)!important}.force-white-icons [is="ui-icon"].spritesheet-mediumicons,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-mediumicons,\n[is="ui-icon"].force-white-icons.spritesheet-mediumicons,\n.-theme-preserve{-webkit-mask-image:var(--image-file-mediumIcons);-webkit-mask-position:var(--spritesheet-position);background:var(--override-force-white-icons-background)!important}.force-white-icons [is="ui-icon"].spritesheet-arrow-up-down,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-arrow-up-down,\n[is="ui-icon"].force-white-icons.spritesheet-arrow-up-down,\n.-theme-preserve{-webkit-mask-image:var(--image-file-arrow-up-down);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-bell,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-bell,\n[is="ui-icon"].force-white-icons.spritesheet-bell,\n.-theme-preserve{-webkit-mask-image:var(--image-file-bell);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-bug,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-bug,\n[is="ui-icon"].force-white-icons.spritesheet-bug,\n.-theme-preserve{-webkit-mask-image:var(--image-file-bug);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-cloud,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-cloud,\n[is="ui-icon"].force-white-icons.spritesheet-cloud,\n.-theme-preserve{-webkit-mask-image:var(--image-file-cloud);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-cookie,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-cookie,\n[is="ui-icon"].force-white-icons.spritesheet-cookie,\n.-theme-preserve{-webkit-mask-image:var(--image-file-cookie);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-credit-card,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-credit-card,\n[is="ui-icon"].force-white-icons.spritesheet-credit-card,\n.-theme-preserve{-webkit-mask-image:var(--image-file-credit-card);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-cross-circle,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-cross-circle,\n[is="ui-icon"].force-white-icons.spritesheet-cross-circle,\n.-theme-preserve{-webkit-mask-image:var(--image-file-cross-circle);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-database,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-database,\n[is="ui-icon"].force-white-icons.spritesheet-database,\n.-theme-preserve{-webkit-mask-image:var(--image-file-database);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-dock-bottom,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-dock-bottom,\n[is="ui-icon"].force-white-icons.spritesheet-dock-bottom,\n.-theme-preserve{-webkit-mask-image:var(--image-file-dock-bottom);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-dock-left,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-dock-left,\n[is="ui-icon"].force-white-icons.spritesheet-dock-left,\n.-theme-preserve{-webkit-mask-image:var(--image-file-dock-left);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-dock-right,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-dock-right,\n[is="ui-icon"].force-white-icons.spritesheet-dock-right,\n.-theme-preserve{-webkit-mask-image:var(--image-file-dock-right);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-dock-window,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-dock-window,\n[is="ui-icon"].force-white-icons.spritesheet-dock-window,\n.-theme-preserve{-webkit-mask-image:var(--image-file-dock-window);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-document,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-document,\n[is="ui-icon"].force-white-icons.spritesheet-document,\n.-theme-preserve{-webkit-mask-image:var(--image-file-document);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-frame-crossed,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-frame-crossed,\n[is="ui-icon"].force-white-icons.spritesheet-frame-crossed,\n.-theme-preserve{-webkit-mask-image:var(--image-file-frame-crossed);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-frame,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-frame,\n[is="ui-icon"].force-white-icons.spritesheet-frame,\n.-theme-preserve{-webkit-mask-image:var(--image-file-frame);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-gears,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-gears,\n[is="ui-icon"].force-white-icons.spritesheet-gears,\n.-theme-preserve{-webkit-mask-image:var(--image-file-gears);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-heap-snapshot,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-heap-snapshot,\n[is="ui-icon"].force-white-icons.spritesheet-heap-snapshot,\n.-theme-preserve{-webkit-mask-image:var(--image-file-heap-snapshot);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-heap-snapshots,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-heap-snapshots,\n[is="ui-icon"].force-white-icons.spritesheet-heap-snapshots,\n.-theme-preserve{-webkit-mask-image:var(--image-file-heap-snapshots);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-iframe-crossed,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-iframe-crossed,\n[is="ui-icon"].force-white-icons.spritesheet-iframe-crossed,\n.-theme-preserve{-webkit-mask-image:var(--image-file-iframe-crossed);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-iframe,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-iframe,\n[is="ui-icon"].force-white-icons.spritesheet-iframe,\n.-theme-preserve{-webkit-mask-image:var(--image-file-iframe);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-info,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-info,\n[is="ui-icon"].force-white-icons.spritesheet-info,\n.-theme-preserve{-webkit-mask-image:var(--image-file-info);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-list,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-list,\n[is="ui-icon"].force-white-icons.spritesheet-list,\n.-theme-preserve{-webkit-mask-image:var(--image-file-list);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-popup,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-popup,\n[is="ui-icon"].force-white-icons.spritesheet-popup,\n.-theme-preserve{-webkit-mask-image:var(--image-file-popup);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-profile,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-profile,\n[is="ui-icon"].force-white-icons.spritesheet-profile,\n.-theme-preserve{-webkit-mask-image:var(--image-file-profile);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-sync,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-sync,\n[is="ui-icon"].force-white-icons.spritesheet-sync,\n.-theme-preserve{-webkit-mask-image:var(--image-file-sync);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-table,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-table,\n[is="ui-icon"].force-white-icons.spritesheet-table,\n.-theme-preserve{-webkit-mask-image:var(--image-file-table);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-triangle-right,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-triangle-right,\n[is="ui-icon"].force-white-icons.spritesheet-triangle-right,\n.-theme-preserve{-webkit-mask-image:var(--image-file-triangle-right);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-warning,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-warning,\n[is="ui-icon"].force-white-icons.spritesheet-warning,\n.-theme-preserve{-webkit-mask-image:var(--image-file-warning);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.force-white-icons [is="ui-icon"].spritesheet-watch,\n:host-context(.force-white-icons) [is="ui-icon"].spritesheet-watch,\n[is="ui-icon"].force-white-icons.spritesheet-watch,\n.-theme-preserve{-webkit-mask-image:var(--image-file-watch);-webkit-mask-position:var(--spritesheet-position);background:var(--icon-force-white)!important}.dot::before{content:url("Images/empty.svg");width:6px;height:6px;border-radius:50%;outline:1px solid var(--icon-gap-default);left:9px;position:absolute;top:9px;z-index:1}.green::before{background-color:var(--color-tertiary-bright)}.purple::before{background-color:var(--color-purple-bright)}.expandable-inline-button{background-color:var(--color-background-elevation-2);color:var(--color-text-primary);cursor:pointer;border-radius:3px}.undisplayable-text,\n.expandable-inline-button{padding:1px 3px;margin:0 2px;font-size:11px;font-family:sans-serif;white-space:nowrap;display:inline-block}.undisplayable-text::after,\n.expandable-inline-button::after{content:attr(data-text)}.undisplayable-text{color:var(--color-text-disabled);font-style:italic}.expandable-inline-button:hover,\n.expandable-inline-button:focus-visible{background-color:var(--color-background-elevation-1)}.expandable-inline-button:focus-visible{background-color:var(--color-background-elevation-1)}::selection{--override-selection-background-color:rgb(141 199 248/60%);background-color:var(--override-selection-background-color)}.-theme-with-dark-background *::selection,\n:host-context(.-theme-with-dark-background) *::selection{background-color:rgb(93 93 93/60%)}.reload-warning{align-self:center;margin-left:10px}button.link{border:none;background:none;padding:3px}button.link:focus-visible{--override-link-focus-background-color:rgb(0 0 0/8%);background-color:var(--override-link-focus-background-color);border-radius:2px}.-theme-with-dark-background button.link:focus-visible,\n:host-context(.-theme-with-dark-background) button.link:focus-visible{--override-link-focus-background-color:rgb(230 230 230/8%)}@media (forced-colors: active){.dimmed,\n  .chrome-select:disabled{opacity:100%}[is="ui-icon"].icon-mask,\n  .force-white-icons [is="ui-icon"].spritesheet-smallicons,\n  :host-context(.force-white-icons) [is="ui-icon"].spritesheet-smallicons,\n  [is="ui-icon"].force-white-icons.spritesheet-smallicons,\n  .force-white-icons [is="ui-icon"].spritesheet-largeicons,\n  :host-context(.force-white-icons) [is="ui-icon"].spritesheet-largeicons,\n  [is="ui-icon"].force-white-icons.spritesheet-largeicons,\n  .force-white-icons [is="ui-icon"].spritesheet-mediumicons,\n  :host-context(.force-white-icons) [is="ui-icon"].spritesheet-mediumicons,\n  [is="ui-icon"].force-white-icons.spritesheet-mediumicons,\n  .-theme-preserve{forced-color-adjust:none;background-color:ButtonText}.harmony-input:not([type]),\n  .harmony-input[type="number"],\n  .harmony-input[type="text"]{border:1px solid ButtonText}.harmony-input:not([type]):focus,\n  .harmony-input[type="number"]:focus,\n  .harmony-input[type="text"]:focus{border:1px solid Highlight}}input.custom-search-input::-webkit-search-cancel-button{appearance:none;cursor:pointer;width:16px;height:15px;margin-right:0;background-position:-32px 32px;background-image:var(--image-file-mediumIcons)}.spinner::before{display:block;width:var(--dimension,24px);height:var(--dimension,24px);border:var(--override-spinner-size,3px) solid var(--override-spinner-color,var(--color-text-secondary));border-radius:12px;clip:rect(0,var(--clip-size,15px),var(--clip-size,15px),0);content:"";position:absolute;animation:spinner-animation 1s linear infinite;box-sizing:border-box}@keyframes spinner-animation{from{transform:rotate(0)}to{transform:rotate(360deg)}}.adorner-container{display:inline-block}.adorner-container.hidden{display:none}.adorner-container devtools-adorner{margin-left:3px}:host-context(.-theme-with-dark-background) devtools-adorner{--override-adorner-background-color:rgb(var(--color-syntax-2-rgb)/15%);--override-adorner-border-color:rgb(var(--color-syntax-2-rgb)/50%);--override-adorner-focus-border-color:var(--color-syntax-2);--override-adorner-active-background-color:var(--color-syntax-8)}.panel{display:flex;overflow:hidden;position:absolute;top:0;left:0;right:0;bottom:0;z-index:0;background-color:var(--color-background)}.panel-sidebar{overflow-x:hidden;background-color:var(--color-background-elevation-1)}iframe.extension{flex:auto;width:100%;height:100%}iframe.panel.extension{display:block;height:100%}@media (forced-colors: active){:root{--legacy-accent-color:Highlight;--legacy-focus-ring-inactive-shadow-color:ButtonText}}\n/*# sourceURL=inspectorCommon.css */\n');const We=new CSSStyleSheet;We.replaceSync('.devtools-link{color:var(--color-link);text-decoration:underline;cursor:pointer;outline-offset:2px}.devtools-link:focus-visible{outline-width:unset}input.devtools-text-input[type="text"]{padding:3px 6px;margin-left:4px;margin-right:4px;width:250px;height:25px}input.devtools-text-input[type="text"]::placeholder{color:var(--color-text-secondary)}.protocol-handlers-row{margin:10px 0 2px 18px}.inline-icon{vertical-align:text-bottom}@media (forced-colors: active){.devtools-link:not(.devtools-link-prevent-click){color:linktext}.devtools-link:focus-visible{background:Highlight;color:HighlightText}}\n/*# sourceURL=protocolHandlersView.css */\n');const Ge={protocolDetected:"Found valid protocol handler registration in the {PH1}. With the app installed, test the registered protocols.",protocolNotDetected:"Define protocol handlers in the {PH1} to register your app as a handler for custom protocols when your app is installed.",needHelpReadOur:"Need help? Read {PH1}.",protocolHandlerRegistrations:"URL protocol handler registration for PWAs",manifest:"manifest",testProtocol:"Test protocol",dropdownLabel:"Select protocol handler",textboxLabel:"Query parameter or endpoint for protocol handler",textboxPlaceholder:"Enter URL"},ze=e.i18n.registerUIStrings("panels/application/components/ProtocolHandlersView.ts",Ge),Ke=e.i18n.getLocalizedString.bind(void 0,ze);class _e extends HTMLElement{static litTagName=r.literal`devtools-protocol-handlers-view`;#e=this.attachShadow({mode:"open"});#Pe=[];#De=b.DevToolsPath.EmptyUrlString;#Me="";#Ee="";set data(e){const t=this.#De!==e.manifestLink;this.#Pe=e.protocolHandlers,this.#De=e.manifestLink,t&&this.#Ve()}#Ve(){this.#Ee="",this.#Me=this.#Pe[0]?.protocol??"",this.#T()}#Be(){const t=T.XLink.XLink.create(this.#De,Ke(Ge.manifest)),i=this.#Pe.length>0?Ge.protocolDetected:Ge.protocolNotDetected,a=this.#Pe.length>0?{iconName:"check-circle",color:"var(--icon-checkmark-green)",width:"16px",height:"16px"}:{iconName:"info",color:"var(--icon-default)",width:"16px",height:"16px"};return r.html` <div class="protocol-handlers-row status"> <${s.Icon.Icon.litTagName} class="inline-icon" .data="${a}"> </${s.Icon.Icon.litTagName}> ${e.i18n.getFormatLocalizedString(ze,i,{PH1:t})} </div> `}#Fe(){if(0===this.#Pe.length)return r.nothing;const e=this.#Pe.filter((e=>e.protocol)).map((e=>r.html`<option value="${e.protocol}">${e.protocol}://`));return r.html` <div class="protocol-handlers-row"> <select class="chrome-select protocol-select" @change="${this.#Ae}" aria-label="${Ke(Ge.dropdownLabel)}"> ${e} </select> <input .value="${this.#Ee}" class="devtools-text-input" type="text" @change="${this.#Le}" aria-label="${Ke(Ge.textboxLabel)}" placeholder="${Ke(Ge.textboxPlaceholder)}/"> <${t.Button.Button.litTagName} .variant="${"primary"}" @click="${this.#He}"> ${Ke(Ge.testProtocol)} </${t.Button.Button.litTagName}> </div> `}#Ae=e=>{this.#Me=e.target.value};#Le=e=>{this.#Ee=e.target.value,this.#T()};#He=()=>{const e=`${this.#Me}://${this.#Ee}`;S.InspectorFrontendHost.InspectorFrontendHostInstance.openInNewTab(e),S.userMetrics.actionTaken(S.UserMetrics.Action.CaptureTestProtocolClicked)};connectedCallback(){this.#e.adoptedStyleSheets=[We,qe,y.textInputStyles]}#T(){const t=T.XLink.XLink.create("https://web.dev/url-protocol-handler/",Ke(Ge.protocolHandlerRegistrations));r.render(r.html` ${this.#Be()} <div class="protocol-handlers-row"> ${e.i18n.getFormatLocalizedString(ze,Ge.needHelpReadOur,{PH1:t})} </div> ${this.#Fe()} `,this.#e,{host:this})}}c.CustomElements.defineComponent("devtools-protocol-handlers-view",_e);var je=Object.freeze({__proto__:null,ProtocolHandlersView:_e});const Xe={noReportsToDisplay:"No reports to display",status:"Status",destination:"Destination",generatedAt:"Generated at"},Je=e.i18n.registerUIStrings("panels/application/components/ReportsGrid.ts",Xe),Ye=e.i18n.getLocalizedString.bind(void 0,Je),{render:Qe,html:Ze}=r;class et extends HTMLElement{static litTagName=r.literal`devtools-resources-reports-grid-status-header`;#e=this.attachShadow({mode:"open"});connectedCallback(){this.#e.adoptedStyleSheets=[U],this.#T()}#T(){Qe(Ze` ${Ye(Xe.status)} <x-link href="https://web.dev/reporting-api/#report-status"> <${s.Icon.Icon.litTagName} class="inline-icon" .data="${{iconName:"help",color:"var(--icon-link)",width:"16px",height:"16px"}}"></${s.Icon.Icon.litTagName}> </x-link> `,this.#e,{host:this})}}class tt extends HTMLElement{static litTagName=r.literal`devtools-resources-reports-grid`;#e=this.attachShadow({mode:"open"});#Oe=[];#Z=!1;connectedCallback(){this.#e.adoptedStyleSheets=[U],this.#Z=a.Runtime.experiments.isEnabled("protocolMonitor"),this.#T()}set data(e){this.#Oe=e.reports,this.#T()}#T(){const t={columns:[{id:"url",title:e.i18n.lockedString("URL"),widthWeighting:30,hideable:!1,visible:!0},{id:"type",title:e.i18n.lockedString("Type"),widthWeighting:20,hideable:!1,visible:!0},{id:"status",title:Ye(Xe.status),widthWeighting:20,hideable:!1,visible:!0,titleElement:Ze` <${et.litTagName}></${et.litTagName}> `},{id:"destination",title:Ye(Xe.destination),widthWeighting:20,hideable:!1,visible:!0},{id:"timestamp",title:Ye(Xe.generatedAt),widthWeighting:20,hideable:!1,visible:!0},{id:"body",title:e.i18n.lockedString("Body"),widthWeighting:20,hideable:!1,visible:!0}],rows:this.#P()};this.#Z&&t.columns.unshift({id:"id",title:"ID",widthWeighting:30,hideable:!1,visible:!0}),Qe(Ze` <div class="reporting-container"> <div class="reporting-header">${e.i18n.lockedString("Reports")}</div> ${this.#Oe.length>0?Ze` <${p.DataGridController.DataGridController.litTagName} .data="${t}"> </${p.DataGridController.DataGridController.litTagName}> `:Ze` <div class="reporting-placeholder"> <div>${Ye(Xe.noReportsToDisplay)}</div> </div> `} </div> `,this.#e,{host:this})}#P(){return this.#Oe.map((e=>({cells:[{columnId:"id",value:e.id},{columnId:"url",value:e.initiatorUrl},{columnId:"type",value:e.type},{columnId:"status",value:e.status},{columnId:"destination",value:e.destination},{columnId:"timestamp",value:new Date(1e3*e.timestamp).toLocaleString()},{columnId:"body",value:JSON.stringify(e.body)}]})))}}c.CustomElements.defineComponent("devtools-resources-reports-grid-status-header",et),c.CustomElements.defineComponent("devtools-resources-reports-grid",tt);var it=Object.freeze({__proto__:null,i18nString:Ye,ReportsGridStatusHeader:et,ReportsGrid:tt});const rt=new CSSStyleSheet;rt.replaceSync(":host{padding:20px}.heading{font-size:15px}devtools-data-grid-controller{border:1px solid var(--color-details-hairline);margin-top:20px}.info-icon{vertical-align:text-bottom;height:14px}.no-events-message{margin-top:20px}\n/*# sourceURL=sharedStorageAccessGrid.css */\n");const at={sharedStorage:"Shared Storage",allSharedStorageEvents:"All shared storage events for this page.",eventTime:"Event Time",eventType:"Access Type",mainFrameId:"Main Frame ID",ownerOrigin:"Owner Origin",eventParams:"Optional Event Params",noEvents:"No shared storage events recorded."},ot=e.i18n.registerUIStrings("panels/application/components/SharedStorageAccessGrid.ts",at),nt=e.i18n.getLocalizedString.bind(void 0,ot);class st extends HTMLElement{static litTagName=r.literal`devtools-shared-storage-access-grid`;#e=this.attachShadow({mode:"open"});#$e=[];connectedCallback(){this.#e.adoptedStyleSheets=[rt],this.#T()}set data(e){this.#$e=e,this.#T()}#T(){r.render(r.html` <div> <span class="heading">${nt(at.sharedStorage)}</span> <${s.Icon.Icon.litTagName} class="info-icon" title="${nt(at.allSharedStorageEvents)}" .data="${{iconName:"info",color:"var(--icon-default)",width:"16px"}}"> </${s.Icon.Icon.litTagName}> ${this.#Ne()} </div> `,this.#e,{host:this})}#Ne(){if(0===this.#$e.length)return r.html`<div class="no-events-message">${nt(at.noEvents)}</div>`;const e={columns:[{id:"event-main-frame-id",title:nt(at.mainFrameId),widthWeighting:10,hideable:!1,visible:!1,sortable:!1},{id:"event-time",title:nt(at.eventTime),widthWeighting:10,hideable:!1,visible:!0,sortable:!0},{id:"event-type",title:nt(at.eventType),widthWeighting:10,hideable:!1,visible:!0,sortable:!0},{id:"event-owner-origin",title:nt(at.ownerOrigin),widthWeighting:10,hideable:!1,visible:!0,sortable:!0},{id:"event-params",title:nt(at.eventParams),widthWeighting:10,hideable:!1,visible:!0,sortable:!0}],rows:this.#Ce(),initialSort:{columnId:"event-time",direction:"ASC"}};return r.html` <${p.DataGridController.DataGridController.litTagName} .data="${e}"></${p.DataGridController.DataGridController.litTagName}> `}#Ce(){return this.#$e.map((e=>({cells:[{columnId:"event-main-frame-id",value:e.mainFrameId},{columnId:"event-time",value:e.accessTime,renderer:this.#Ie.bind(this)},{columnId:"event-type",value:e.type},{columnId:"event-owner-origin",value:e.ownerOrigin},{columnId:"event-params",value:JSON.stringify(e.params)}]})))}#Ie(e){const t=new Date(1e3*e);return r.html`${t.toLocaleString()}`}}c.CustomElements.defineComponent("devtools-shared-storage-access-grid",st);var ct=Object.freeze({__proto__:null,i18nString:nt,SharedStorageAccessGrid:st});const lt=new CSSStyleSheet;lt.replaceSync(".text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-icon{vertical-align:text-bottom;margin-left:2px}\n/*# sourceURL=sharedStorageMetadataView.css */\n");const dt=new CSSStyleSheet;dt.replaceSync(".reset-budget-button{width:16px;height:16px;background:transparent;overflow:hidden;border:none;padding:0;outline:none;margin-left:5px;margin-top:-4px;vertical-align:middle}.reset-budget-button:hover devtools-icon{--icon-color:var(--color-text-primary)}.reset-budget-button:focus devtools-icon{--icon-color:var(--color-text-secondary)}.icon-basic{width:12px;height:14px}\n/*# sourceURL=sharedStorageMetadataViewResetBudgetButton.css */\n");const ht={origin:"Origin",topLevelSite:"Top-level site",opaque:"(opaque)",isOpaque:"Is opaque",isThirdParty:"Is third-party",yes:"Yes",no:"No",yesBecauseTopLevelIsOpaque:"Yes, because the top-level site is opaque",yesBecauseKeyIsOpaque:"Yes, because the storage key is opaque",yesBecauseOriginNotInTopLevelSite:"Yes, because the origin is outside of the top-level site",yesBecauseAncestorChainHasCrossSite:"Yes, because the ancestry chain contains a third-party origin",loading:"Loading…",bucketName:"Bucket name",persistent:"Is persistent",durability:"Durability",quota:"Quota",expiration:"Expiration",none:"None"},mt=e.i18n.registerUIStrings("panels/application/components/StorageMetadataView.ts",ht),pt=e.i18n.getLocalizedString.bind(void 0,mt),gt=l.RenderCoordinator.RenderCoordinator.instance();class ut extends n.LegacyWrapper.WrappableComponent{static litTagName=r.literal`devtools-storage-metadata-view`;#e=this.attachShadow({mode:"open"});#Ue=null;#qe=null;getShadow(){return this.#e}setStorageKey(e){this.#Ue=i.StorageKeyManager.parseStorageKey(e),this.render()}setStorageBucket(e){this.#qe=e,this.setStorageKey(e.bucket.storageKey)}render(){return gt.write("StorageMetadataView render",(async()=>{r.render(r.html` <${o.ReportView.Report.litTagName} .data="${{reportTitle:this.getTitle()||pt(ht.loading)}}"> ${await this.renderReportContent()} </${o.ReportView.Report.litTagName}>`,this.#e,{host:this})}))}getTitle(){return this.#Ue?.origin}key(e){return r.html`<${o.ReportView.ReportKey.litTagName}>${e}</${o.ReportView.ReportKey.litTagName}>`}value(e){return r.html`<${o.ReportView.ReportValue.litTagName}>${e}</${o.ReportView.ReportValue.litTagName}>`}async renderReportContent(){if(!this.#Ue)return r.nothing;const e=this.#Ue.origin,t=Boolean(this.#Ue.components.get("3")),i=Boolean(this.#Ue.components.get("1")),a=Boolean(this.#Ue.components.get("4")),o=this.#Ue.components.get("0"),n=t?pt(ht.yesBecauseAncestorChainHasCrossSite):i?pt(ht.yesBecauseKeyIsOpaque):a?pt(ht.yesBecauseTopLevelIsOpaque):o&&e!==o?pt(ht.yesBecauseOriginNotInTopLevelSite):null;return r.html` ${this.key(pt(ht.origin))} ${this.value(r.html`<div class="text-ellipsis" title="${e}">${e}</div>`)} ${o||a?this.key(pt(ht.topLevelSite)):r.nothing} ${o?this.value(o):r.nothing} ${a?this.value(pt(ht.opaque)):r.nothing} ${n?r.html`${this.key(pt(ht.isThirdParty))}${this.value(n)}`:r.nothing} ${i||a?this.key(pt(ht.isOpaque)):r.nothing} ${i?this.value(pt(ht.yes)):r.nothing} ${a?this.value(pt(ht.yesBecauseTopLevelIsOpaque)):r.nothing} ${this.#qe?this.#We():r.nothing}`}#We(){if(!this.#qe)throw new Error("Should not call #renderStorageBucketInfo if #bucket is null.");const{bucket:{name:e},persistent:t,durability:i,quota:a}=this.#qe;return r.html` ${this.key(pt(ht.bucketName))} ${this.value(e||"default")} ${this.key(pt(ht.persistent))} ${this.value(pt(t?ht.yes:ht.no))} ${this.key(pt(ht.durability))} ${this.value(i)} ${this.key(pt(ht.quota))} ${this.value(b.NumberUtilities.bytesToString(a))} ${this.key(pt(ht.expiration))} ${this.value(this.#Ge())}`}#Ge(){if(!this.#qe)throw new Error("Should not call #getExpirationString if #bucket is null.");const{expiration:e}=this.#qe;return 0===e?pt(ht.none):new Date(1e3*e).toLocaleString()}}c.CustomElements.defineComponent("devtools-storage-metadata-view",ut);var wt=Object.freeze({__proto__:null,StorageMetadataView:ut});const kt={sharedStorage:"Shared Storage",creation:"Creation Time",notYetCreated:"Not yet created",numEntries:"Number of Entries",entropyBudget:"Entropy Budget for Fenced Frames",budgetExplanation:"Remaining data leakage allowed within a 24-hour period for this origin in bits of entropy",resetBudget:"Reset Budget"},bt=e.i18n.registerUIStrings("panels/application/components/SharedStorageMetadataView.ts",kt),ft=e.i18n.getLocalizedString.bind(void 0,bt);class vt extends HTMLElement{static litTagName=r.literal`devtools-shared-storage-reset-budget-button`;#e=this.attachShadow({mode:"open"});#ze=()=>{};connectedCallback(){this.#e.adoptedStyleSheets=[dt]}set data(e){this.#ze=e.resetBudgetHandler,this.#T()}#T(){r.render(r.html` <button class="reset-budget-button" title="${ft(kt.resetBudget)}" @click="${()=>this.#ze()}"> <${s.Icon.Icon.litTagName} .data="${{iconName:"undo",color:"var(--icon-default)",width:"16px",height:"16px"}}"> </${s.Icon.Icon.litTagName}> </button>`,this.#e,{host:this})}}class St extends ut{static litTagName=r.literal`devtools-shared-storage-metadata-view`;#Ke;#_e=null;#je=0;#Xe=0;constructor(e,t){super(),this.#Ke=e,this.classList.add("overflow-auto"),this.setStorageKey(t)}async#Je(){await this.#Ke.resetBudget(),await this.render()}connectedCallback(){this.getShadow().adoptedStyleSheets=[lt]}getTitle(){return ft(kt.sharedStorage)}async renderReportContent(){const e=await this.#Ke.getMetadata();return this.#_e=e?.creationTime??null,this.#je=e?.length??0,this.#Xe=e?.remainingBudget??0,r.html` ${await super.renderReportContent()} ${this.key(ft(kt.creation))} ${this.value(this.#Ye())} ${this.key(ft(kt.numEntries))} ${this.value(String(this.#je))} ${this.key(r.html`${ft(kt.entropyBudget)}<${s.Icon.Icon.litTagName} class="info-icon" title="${ft(kt.budgetExplanation)}" .data="${{iconName:"info",color:"var(--icon-default)",width:"16px"}}"> </${s.Icon.Icon.litTagName}>`)} ${this.value(r.html`${this.#Xe}${this.#Qe()}`)}`}#Ye(){if(!this.#_e)return r.html`${ft(kt.notYetCreated)}`;const e=new Date(1e3*this.#_e);return r.html`${e.toLocaleString()}`}#Qe(){return r.html`<${vt.litTagName} .data="${{resetBudgetHandler:this.#Je.bind(this)}}"></${vt.litTagName}>`}}c.CustomElements.defineComponent("devtools-shared-storage-reset-budget-button",vt),c.CustomElements.defineComponent("devtools-shared-storage-metadata-view",St);var yt=Object.freeze({__proto__:null,SharedStorageMetadataView:St});const Tt=new CSSStyleSheet;Tt.replaceSync(":host{padding:20px}.heading{font-size:15px}devtools-data-grid-controller{border:1px solid var(--color-details-hairline);margin-top:20px}.info-icon{vertical-align:text-bottom;height:14px}.no-tt-message{margin-top:20px}\n/*# sourceURL=trustTokensView.css */\n");const Rt=new CSSStyleSheet;Rt.replaceSync(".delete-button{width:16px;height:16px;background:transparent;overflow:hidden;border:none;padding:0;outline:none}.delete-button:hover devtools-icon{--icon-color:var(--color-text-primary)}.delete-button:focus devtools-icon{--icon-color:var(--color-text-secondary)}.button-container{display:block;text-align:center}\n/*# sourceURL=trustTokensViewDeleteButton.css */\n");const xt={issuer:"Issuer",storedTokenCount:"Stored token count",allStoredTrustTokensAvailableIn:"All stored Private State Tokens available in this browser instance.",noTrustTokensStored:"No Private State Tokens are currently stored.",deleteTrustTokens:"Delete all stored Private State Tokens issued by {PH1}.",trustTokens:"Private State Tokens"},$t=e.i18n.registerUIStrings("panels/application/components/TrustTokensView.ts",xt),Nt=e.i18n.getLocalizedString.bind(void 0,$t);class Ct extends HTMLElement{static litTagName=r.literal`devtools-trust-tokens-delete-button`;#e=this.attachShadow({mode:"open"});#Ze=null;#et=()=>{};connectedCallback(){this.#e.adoptedStyleSheets=[Rt]}set data(e){this.#Ze=e.issuer,this.#et=e.deleteClickHandler,this.#T()}#T(){this.#Ze&&r.render(r.html` <span class="button-container"> <button class="delete-button" title="${Nt(xt.deleteTrustTokens,{PH1:this.#Ze})}" @click="${()=>this.#et(this.#Ze)}"> <${s.Icon.Icon.litTagName} .data="${{iconName:"bin",color:"var(--icon-default)",width:"14px",height:"14px"}}"> </${s.Icon.Icon.litTagName}> </button> </span>`,this.#e,{host:this})}}class It extends HTMLElement{static litTagName=r.literal`devtools-trust-tokens-storage-view`;#e=this.attachShadow({mode:"open"});#tt=[];#et=()=>{};connectedCallback(){this.#e.adoptedStyleSheets=[Tt],this.#T()}set data(e){this.#tt=e.tokens,this.#et=e.deleteClickHandler,this.#T()}#T(){r.render(r.html` <div> <span class="heading">${Nt(xt.trustTokens)}</span> <${s.Icon.Icon.litTagName} class="info-icon" title="${Nt(xt.allStoredTrustTokensAvailableIn)}" .data="${{iconName:"info",color:"var(--icon-default)",width:"16px"}}"> </${s.Icon.Icon.litTagName}> ${this.#Ne()} </div> `,this.#e,{host:this})}#Ne(){if(0===this.#tt.length)return r.html`<div class="no-tt-message">${Nt(xt.noTrustTokensStored)}</div>`;const e={columns:[{id:"issuer",title:Nt(xt.issuer),widthWeighting:10,hideable:!1,visible:!0,sortable:!0},{id:"count",title:Nt(xt.storedTokenCount),widthWeighting:5,hideable:!1,visible:!0,sortable:!0},{id:"delete-button",title:"",widthWeighting:1,hideable:!1,visible:!0,sortable:!1}],rows:this.#it(),initialSort:{columnId:"issuer",direction:"ASC"}};return r.html` <${p.DataGridController.DataGridController.litTagName} .data="${e}"></${p.DataGridController.DataGridController.litTagName}> `}#it(){return this.#tt.filter((e=>e.count>0)).map((e=>({cells:[{columnId:"delete-button",value:Pt(e.issuerOrigin),renderer:this.#rt.bind(this)},{columnId:"issuer",value:Pt(e.issuerOrigin)},{columnId:"count",value:e.count}]})))}#rt(e){return r.html`<${Ct.litTagName} .data="${{issuer:e,deleteClickHandler:this.#et}}"></${Ct.litTagName}>`}}function Pt(e){return e.replace(/\/$/,"")}c.CustomElements.defineComponent("devtools-trust-tokens-delete-button",Ct),c.CustomElements.defineComponent("devtools-trust-tokens-storage-view",It);var Dt=Object.freeze({__proto__:null,i18nString:Nt,TrustTokensView:It});export{V as BackForwardCacheView,O as BounceTrackingMitigationsView,j as EndpointsGrid,Be as FrameDetailsView,Ue as InterestGroupAccessGrid,Re as OriginTrialTreeView,je as ProtocolHandlersView,it as ReportsGrid,ct as SharedStorageAccessGrid,yt as SharedStorageMetadataView,re as StackTrace,wt as StorageMetadataView,Dt as TrustTokensView};
